Giriş
Daha önceki bir zorlukta karınca permütasyonu sınıfını tanımladım . Bir hatırlatma, bir permütasyon olarak p gelen sayılar 0 için r-1 , her bir giriş için, eğer sabırsız, bir p [i] ilk dışında, daha önceki bazı giriş yoktur , p [ik] öyle ki , p [i] == s [ ik] ± 1 . Eğlenceli bir gerçeği olarak, ben de için belirtti r ≥ 1 , tam orada 2 r-1 uzunluğunun Antsy permütasyon r . Bu, r uzunluğunun antsy permütasyonları ile r-1 uzunluğunun ikili vektörleri arasında bire bir yazışma olduğu anlamına gelir.. Bu meydan okumada, göreviniz böyle bir yazışmayı uygulamaktır.
Görev
Göreviniz, uzunluk 1 ≤ n ≤ 99 olan bir ikili vektörü alan ve n + 1 uzunluğunda bir karıncalanma permütasyonu çıkaran bir program veya işlev yazmaktır . Permütasyon 0 tabanlı 1 tabanlı olabilir (ancak bu tutarlı olmalıdır) ve giriş ve çıkış herhangi bir makul formatta olabilir. Ayrıca, farklı girdiler her zaman farklı çıktılar vermelidir; bunun dışında, hangi antsy permütasyonunu istersen geri dönebilirsin.
En düşük bayt sayısı kazanır.
Misal
4 uzunluğundaki (0 tabanlı) antsy permütasyonları
0 1 2 3
1 0 2 3
1 2 0 3
1 2 3 0
2 1 0 3
2 1 3 0
2 3 1 0
3 2 1 0
ve programınız uzunluk 3'ün sekiz bitlik vektörlerinin her biri için bunlardan birini döndürmelidir:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 1ve 0 0 1farklı uzunluklarda çıktılar vermelidir.