Bu, çoğunuz elle çözdüğünüz ortak bir bilmecedir. Şimdi bu sorunu çözmek için bir algoritma yazma zamanı.
Birbirlerinin yönüne bakan iki farklı tarafa dizilmiş eşit sayıda maç çubukları vardır. Aralarında tek bir boşluk var. Aşağıdaki şekle benzer bir şey söyleyin (toplam maç sopa sayısı 4 ise).
Her çubuk ya bir adım ileri yönde kayabilir (hemen ön alan boşsa) veya önlerindeki bir çubuğun üzerinden atlanabilir ve boş alana inebilir (bu alan boşsa). Ters yönde hareket mümkün değildir (boşluk bile olsa). Ters atlamaya da izin verilmez. Bir adımda yalnızca bir hamleye izin verilir.
Şimdi, tüm sol taraftaki maç sopalarının sağ tarafa ineceği ve tüm sağ taraftaki maç sopalarının sol tarafa ineceği gereken minimum adımları bulmak için bir algoritma yazmalısınız.
Örneğin: Toplam 2 maç çubuğu (her iki tarafta 1 adet) varsa, adımlar şu şekilde olacaktır:
Not: Yukarıdaki şekilde ilk önce sol taraftaki çubuk hareket ettirilmiştir. Sağ taraftaki çubuk ilk hareket ettiğinde başka bir çözüm daha vardır. Ancak bu sorun için sadece bir çözüm vermelisiniz ve bu da sol taraftaki çubuğun önce hareket ettiğini varsayar.
Aşağıdaki şekilde 4 kibrit çubuklu (her iki tarafta 2 adet) hareket açıklanmaktadır:
Not: Yukarıdaki şekilde ilk önce sol taraftaki çubuk hareket ettirilmiştir. Sağ taraftaki çubuk ilk hareket ettiğinde başka bir çözüm daha vardır. Ancak bu sorun için sadece bir çözüm vermelisiniz ve bu da sol taraftaki çubuğun önce hareket ettiğini varsayar.
[Varsayım: Giriş 02 ila 14 arasında herhangi bir çift sayı olabilir (yani her bir tarafta 1 ila 7 eşleşme çubuğu). Bu aralığın dışındaki girişler için herhangi bir doğrulama yapmanız veya hata mesajı vermeniz gerekmez. Not: Çıktıda, her adım bir '|' ile ayrılır karakter. COBOL programcıları her zaman giriş boyutu olarak PIC 9 (2) varsaymalı ve çıktının sağda boşluklarla doldurulmuş maksimum uzunluk 450 karakter olarak sabit olduğunu varsayabilir.]
Örnek Giriş:
02
Örnek Çıktı:
01To02|03To01|02To03|
Örnek Giriş:
04
Örnek Çıktı:
02To03|04To02|05To04|03To05|01To03|02To01|04To02|03To04|
Örnek Giriş:
06
Örnek Çıktı:
03To04|05To03|06To05|04To06|02To04|01To02|03To01|05To03|07To05|06To07|04To06|02To04|03To02|05To03|04To05|