Eğer Japon ya da Doğu Asya kültürüne hiç maruz kaldıysanız, kesinlikle Amidakuji oyunuyla karşılaşmış olacaksınız:
As Vikipedi açıklıyor , bu piyango bir tür kağıt üzerinde çizilmiş ve rastgele N öğelerin bir permütasyon seçmek için kullanılır.
Örneğin, N kişiye rastgele bir başlangıç dizisi veya N kişiye N ödül, vb. Atamak için kullanılabilir.
Oyun bir permütasyon temsil neden anlamak için hile (bir "bacak" olarak adlandırılır) her yatay inme fark etmektir swapları yerde onun iki öğeyi.
Aynı Wikipedia sayfası ayrıca N öğenin her permütasyon P'sinin sonsuz sayıda Amidakuji diyagramına karşılık geldiğini açıklar. En az sayıda yatay darbeye (ayağa) sahip olan (lar) bu belirli permütasyon P'nin "primerleri" olarak adlandırılır.
Göreviniz 2 veya daha fazla dikey çizgiyle (bu örnekte 6'dır) bir Amidakuji diyagramı almaktır (eksi harfler):
A B C D E F
| | | | | |
|-| |-| |-|
| |-| |-| |
| | | | |-|
| |-| |-| |
| | |-| |-|
| | |-| | |
|-| | |-| |
|-| |-| | |
| |-| | |-|
| | | | | |
B C A D F E
Ve asallarından birini üretin (yine, harfler eksi):
A B C D E F
| | | | | |
|-| | | |-|
| |-| | | |
| | | | | |
B C A D F E
Harfleri olan ilk ve son satırlar formatın bir parçası değildir . Buraya permütasyonu göstermek için ekledim. Ayrıca, bir değil, ilk veya son hatlarının bacakları içeren gerekli |-|, ne de çıkış olabildiğince kompakt olması.
Bu özel giriş örneği, Wikipedia sayfasının üstündeki Amidakuji diyagramının (sonsuz) ASCII gösterimlerinden biridir.
Bu ASCII diyagramları hakkında açık olmayan bir kural vardır: bitişik bacaklar yasaktır.
|-|-| <- NO, this does not represent a single swap!
Wikipedia, aşağıdaki basitleştirmeleri defalarca uygulamaktan oluşan "kabarcıklanma" adı verilen bir diyagramdan bir asal elde etmek için standart bir prosedürü açıklar:
1) Sağ çatal sol çatala:
| |-| |-| |
|-| | -> | |-|
| |-| |-| |
2) Çiftleri ortadan kaldırmak:
|-| | |
|-| -> | |
Bu açıklamanın açık olup olmadığından emin değilim. Kodunuz bu tekniği veya gerekli primerleri üreten herhangi bir algoritmayı kullanabilir.
En kısa kod kazanır.
Standart kurallar ve standart ödenekler geçerlidir. (Giriş geçerli değilse, programınız alev alabilir. Giriş / çıkış biçimleri stdin / stdout, dize bağımsız değişkeni, satır listesi, karakter matrisi, sizin için en uygun olan vb. Olabilir.)

