B. Шидтэнүүд ба Хамгийн Богино Ид Шид

хугацааны хязгаарлалт 2 секунд

санах ойн хязгаарлалт 256 мегабайт

оролт стандарт оролт

гаралт стандарт гаралт

Ид шидийн хамгийн сонирхолтой хэсгүүдийн нэг болох ид шид бичих хэсгийг авч үзье. Үүнийг сурна гэдэг сонирхолтой боловч шинжлэх ухааны сорилтууд нь маш хүнд учраас та одоо шидэт үгсийг сурахгүй юм. Гэхдээ та ид шид бичих энгийн хэдэн дүрмийг сурахаар болжээ.

Ид шид болгон нь хэд хэдэн мөрөөс тогтоно. Эхний хоосон зай биш тэмдэгт нь "#" тэмдэгт байх мөрүүдийг хүч нэмэгдүүлэх мөр гэж нэрлэх бөгөөд энэ нь уг ид шидийн чадалтай холбоотой юм. Үлдсэн мөрүүд нь энгийн мөрүүд бөгөөд ид шидийн үр нөлөөг тодорхойлно.

Та нэгэн ид шидийн эх бичгийг үзэж байв. Ид шид нь маш урт байсан учраас та үүний утга нь юу болохыг огт ойлгохгүй байв. Иймд та уг ид шидийн утгыг өөрчлөхгүйгээр аль болох богинохон болгохыг хүсжээ.

Таны мэдэж байгаа цорын ганц ид шид богиносгох арга бол зарим хоосон зайнуудыг болон тусгаарлагч мөрүүдийг устгах юм. Бидний мэдэж байгаачлан ид шидийн бичиг доторх хоосон зайнууд нь зөвхөн хүч нэмэгдүүлэх мөр дотор байх үедээ л утга илэрхийлэх учраас бид бусад мөрүүдэд байрлах бүх хоосон зайнуудыг устгах юм. Хэрэв шинэ мөрийн дээр болон доор байрлах мөрүүд нь 2-уулаа хүч нэмэгдүүлэх мөрүүд байвал уг шинэ мөр нь хамаатай бөгөөд бусад тохиолдолд хамаагүй байх юм (2-р жишээг харна уу). Түүнчлэн хэрэв дараалсан 2 мөрүүд нь хүч нэмэгдүүлэх мөрүүд биш байвал тэдгээрийг нэгтгэн нэг мөр болгоно өөрөөр хэлбэл бид 2-дахь мөрийг эхний мөртэй холбох юм. Гэвч хүч нэмэгдүүлэх мөр доторх хоосон зайнуудыг устгах болон хүч нэмэгдүүлэх мөрүүдийг ямар нэгэн зүйлтэй холбох нь хориотой болохыг анхаарна уу.

Хоосон мөрүүдийг бусад мөрүүдтэй нь яг ижил байдлаар авч үзэхийг анхаарна уу: Тодруулбал хоосон мөрийг зэргэлдээх хүч нэмэгдүүлээгүй мөрүүдтэй нь холбох ёстой ба хэрэв хүч нэмэгдүүлэх мөрүүдээр хүрээлэгдсэн буюу өөрөөр хэлбэл дээд болон доод талд (хэрэв мөр оршин байвал) нь хүч нэмэгдүүлэх мөрүүд оршин байвал уг хоосон мөрийг гаралтад хэвлэх юм.

Одоохондоо эдгээр нь таны дагах ёстой хэрэггүй тэмдэгтүүдийг устгах дүрмүүд байх юм. Мэдээж хэрэг шинэ мөрийг ч бас тэмдэгт гэж үзнэ.

Бодлогын оролтод ид шидийн бичиг өгөгдөх ба та үүнийг богиносгох хэрэгтэй юм. Тэгвэл хэрэггүй тэмдэгтүүдийг устган үр дүнг гаралтад хэвлэнэ үү.

Оролт

Оролт нь олон тооны мөр агуулна. Мөрүүдэд байх бүх тэмдэгтүүд нь 32-оос 127 (эдгээр нь мөн орно) хүртэлх ASCII кодуудтай байна. Мөрүүд нь нэг эсвэл хэдэн хэдэн хоосон зайгаар эхэлж эсвэл төгсөж болохыг анхаарна уу. Оролтын хэмжээ нь 1048576 ($ = 2^{20}$) байтаас хэтрэхгүй байна. Шинэ мөрүүдийг оролтын хэмжээнд тооцсон байна.

Шалгагч компьютер дээр ашиглах Windows үйлдлийн систем дээр шинэ мөр гэдэг нь #13#10 гэсэн ASCII кодуудтай тэмдэгтүүдийн дараалал байх юм. Мөн оролтод өгөгдөх мөр болгоны ард шинэ мөр байна. Тодруулбал оролт нь шинэ мөрөөр төгсөнө. Шинэ мөр гэдэг нь мөрийн төгсгөлд байх бөгөөд дараагийн мөрийн эхлэл биш болохыг анхаарна уу.

Оролт нь шинэ мөрөөс өөр дор хаяж нэг ширхэг тэмдэгт агуулсан байна.

Оролт болон гаралтыг нэг нэг мөрөөр нь авч үзнэ үү. Ингэсэн тохиолдолд шинэ мөрүүдийг хэл зүйн зөв утгаар нь авч үзэх юм. Өөрөөр хэлбэл нэг нэг мөрөөр нь авч үзэхгүй бол шинэ мөрүүдийг ялгаж ойлгоход хүндрэл учирна.

Гаралт

Хэрэггүй тэмдэгтүүдийг устгасан ид шидийг бичгийг хэвлэнэ үү. Гаралтын мөр болгоны ард шинэ мөр оршин байхыг анхаарна уу.

Таны хариултыг шүүх хариулттай байт байтаар нь харьцуулан шалгаж байж зөвөөр тооцох тул анхааралтай байна уу. Иймд бүх хоосон зайнууд болон шинэ мөрүүд нь хамаатай байх юм.

Орчуулсан: Баатархүү

Жишээ тэстүүд

Оролт
   #   include <cstdio>

using namespace std;

int main     (   ){
puts("Hello # World"); #
#
}
Гаралт
   #   include <cstdio>
usingnamespacestd;intmain(){puts("Hello#World");#
#
}
Оролт
#

#
Гаралт
#

#

Тэмдэглэл

Эхний жишээнд хүч нэмэгдүүлэх мөрүүд нь 1 болон 7-р мөр байх бөгөөд иймд 2 болон 6-р мөрүүдийг хооронд нь холбож үүсэх мөрийн бүх хоосон зайнуудыг устгана.

2-дахь жишээнд хүч нэмэгдүүлэх мөрүүд нь 1 болон 3-р мөр байна. Иймд ямар ч мөрүүд нь хоорондоо холбогдохгүй юм.

Сэтгэгдлүүдийг ачааллаж байна...