Güzel bir tek satırlı fonksiyon yazma şansım oldu.
auto sayilar = stdin.readln.strip.array.map!(a => to!dchar(a)).split("0").map!( a => to!dstring(a.length)).join().dup.array;
Bu 10111011 gibi bir şey verilirse 0 larla ayırıp her ayrışık gruptaki 1 lerin sayısında bir rakam elde ediyor. Bu örnekte 132 oluyor. http://codeforces.com/contest/825/problem/A
Eğer şöyle bir istek olsaydı ne yapardım diye düşündüm
101110110 -> 1320 dönmesin fakat 132 dönsün yanı eğer sondaki eleman sıfır ise sondaki elemanı at.
Bunu benim güzel zincirimi bozmadan yapabilirmiydim acaba ?
auto sayilar = stdin.readln.strip.array.map!(a => to!dchar(a)).split("0").map!( a => to!dstring(a.length)).join().dup.array.dropBackOneIf!( a => a == '0').array
Gibi dropBackOneIf'e denk gelen bir fonksiyon varmıdır std'de
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Permalink
Reply