Kaynak kodunu iki katına çıkarma konusunda bir takım zorluklar oldu: burada ve burada . Burada yaptığımız görev biraz daha zor, ancak hemen hemen her dilde yapılabilir.
Bu zorlukla, keyfi bir pozitif tamsayıya gireceksin. Programınız bu tamsayıyı iki katına çıkarmalıdır . Kaynak kodunuz ikiye katlandığında pozitif bir tamsayı alır ve karesini çıkarır .
Kaynak kodunuz nasıl ikiye katlanır? Peki, senin tarzın olabilir . Demek ki bu zaten, bayt veya karakter dizeleri içine kaynak kodu bölebilmeniz (veya dizgecikli DİLLER'de belirtilen belirteçleri) arasında herhangi eşit istediğiniz uzunlukta ve arka arkaya iki kez her öbek tekrarlayın.
Bir başlangıç programı için ABCDEFGHIJKL
, (uzunluk 12) burada iki olası programın tümü olasıdır:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Bunun, asal uzunluktaki programların yalnızca iki şekilde iki katına çıkarılabileceği anlamına gelir: her karakter iki katına çıkar veya tam program iki kez tekrarlanır.
Kurallar:
- Kod tam bir program veya işlev olmalıdır.
- Standart boşluklar yasaktır.
- Standart G / Ç yöntemlerine izin verilir.
- Boşluk ve satırsonları dahil tüm karakterler / baytlar kodun uzunluğunda sayılır ve topaklara katkıda bulunur.
- Sen olabilir girdi ve kare dilinizin int / tamsayı türü ile temsil edilebilir varsayalım.
- Sen olmayabilir bir eğik yeni satır veya başka bir karakter varsayalım.
- Bayt sayısından sonra başlık boyutunda yığın boyutunuzu girin.
- Bu kod golf , bu yüzden kısa programlar daha iyi! İki program aynı uzunluktaysa, daha küçük yığın uzunluğunu kullanan program kazanır. (Daha küçük bir yığın uzunluğu kullanan daha uzun bir programınız varsa, bu da göndermeye değer!)
- Programınız ikinci bir giriş / satır gerektiriyorsa, değeri hakkında hiçbir varsayımda bulunamazsınız. Özellikle, ikinci giriş boşsa, ilk ile aynı veya farklı bir tamsayıysa programınız çalışmalıdır. Programınız ikinci bir giriş / satır gerektirmiyorsa, bu kısıtlamayı göz ardı edebilirsiniz.
5 -> 10
:; çift kodu: 5 -> 25 25
.
.0
sonunda)?