Fannkuch klasik bir kıyaslama programıdır. Adı, algoritmanın krep yığınlarını çevirme benzerliği için Alman "Pfannkuchen" - krep - geliyor. Bir Fannkuch sayı dizisi aşağıdaki gibi oluşturulur:
{1 ..... n} için bir permütasyon alın, örneğin: {4,2,1,5,3}. Burada 4 olan ilk elemanı alın ve ilk 4 elemanın sırasını tersine çevirin: {5,1,2,4,3}. İlk öğe 1 olana kadar bunu tekrarlayın, bu nedenle çevirme daha fazla bir şey değiştirmeyecektir: {3,4,2,1,5}, {2,4,3,1,5}, {4,2,3, 1,5}, {1,3,2,4,5}
Alfabetik karakter dizeleri için Fannkuch benzeri bir diziyi hesaplayan bir program veya işlev yazmalısınız. Her seferinde listedeki kaç öğenin çevrilmesi gerektiğini belirtmek için sayılar kullanmak yerine, bir harfin alfabedeki konumu kullanılmalıdır. Örneğin, bir satır c
aralığı, ilk 3 öğenin sırasını tersine çevirmeniz gerektiğini belirtirken, satır aralığı a
sıralamanın tamamlandığını gösterir.
Giriş
Giriş stdin aracılığıyla bir dize olarak veya bir işlev bağımsız değişkeni olarak sağlanacaktır. Dize, 1 ile 26 arasında küçük harf içerir. Dizeler, eşdeğeri dizini Fannkuch algoritmasının var olandan daha fazla öğe döndürmesine neden olacak harfler içermez.
Çıktı
Programlar veya işlevler a
, ilk dize de dahil olmak üzere bir öndeki ile karşılaşılana kadar Fannkuch algoritması uygulanarak üretilen terimlerin sırasını döndürmek veya yazdırmak için yazılmalıdır . Örneğin, giriş ise bca
, yazdırabilirsiniz:
bca
cba
abc
Basılı sonuçlar makul ayırıcıları, satırsonlarını, vb. Kullanabilir. Herhangi bir beyaz alan seçeneği kabul edilebilir.
Başka bir örnek olarak, girdiniz şu eabdc
şekilde dönebilir:
("eabdc"
"cdbae"
"bdcae"
"dbcae"
"acbde")
Kurallar ve Puanlama
Bu kod golf - en kısa program kazanır. Standart Loopholes'a izin verilmiyor.
proc fcmp
yok.