Bu soru Kevin Cruijssen'in sorusundan esinlenmiştir .
Şimdi halı döşendiğine göre, onu yuvarlamak istiyoruz. Göreviniz, bir dize alan ve bu dizeden yapılmış bir spiral (yan taraftan görüntülenen rulo halıyı temsil eden) döndüren bir program yazmaktır.
Halının yuvarlanması için bir adım prosedürü aşağıdaki gibidir. Ne demek istediğimi gösteren bir örnek var. Örneğin, daha iyi anlaşılması için kısmen haddelenmiş bir halı ile başladığına dikkat edin:
ac
rpet
- "kafa" yı halının "kuyruğundan" ayırın: şu ana kadar haddelenmiş olan kafa, kuyruk haddelenecek olan şeydir.
Head: ac Tail:
rp et
- Kafayı saat yönünde 90 ° döndürün.
Rotated head: ra Tail (unchanged):
pc et
- (burada yeni kafasının genişliği, eğer
2
) daha az, ya da (buradan kuyruğunun uzunluğuna eşit2
)- sonra kuyruğun üstüne koy
- başka, halı (adımın başında olduğu gibi) yuvarlandı
New carpet: ra
pc
et
Prosedürü gerektiği kadar tekrarlayın.
Halı sarmanın tüm adımlarını gösteren iki örnek:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
Bazı kesinlikler:
- Tüm ara adımları göstermenize gerek yoktur, sadece rulo halı (örneğin, sonucu hesaplamak için yinelemesiz bir yol bulursanız, mükemmeldir). Ayrıca, herhangi bir önde gelen boşluk yazdırmanıza gerek yoktur, yukarıdaki örneklerde, bunları yalnızca bir şeyleri hizalamak için gösteririm.
- Girdi bir String, karakter listesi / dizisidir
- Çıktı stdout'a veya bir dosyaya yazdırılır.
- Girdi güzel: uzunluk en az 1 karakterdir ve en fazla yeterince sabittir, böylece sorun yaratmaz, ancak programınızda bu sabiti kullanamazsınız; dizenin içeriği yalnızca hoş karakterler ([a-zA-Z0-9]), tercih ettiğiniz şekilde kodlanır.
- Bu kod golf , bayt en kısa cevap kazanır. Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi istemesine izin vermeyin. 'Herhangi bir' programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için test içeren bir bağlantı ekleyin.
- Ayrıca, gerekli olduğunu düşünüyorsanız cevabınıza bir açıklama ekleyin.
ProgrammingPuzzlesAndCodeGolf
- 1'den büyük son kuyruk uzunluğu beni yukarı attı.
print
içinde kullanamayacağım için Python 2 cevabımı sildim lambda
.