Bir süre önce 8 kart (her iki tarafta 4 adet) tutabilen yeni bir cüzdan satın aldım. Ancak, bundan daha fazla kartım var ve benimle taşımak istediğim şeyleri seçmem gerekiyor. Bazı kartlar diğerlerinden daha sık kullanıyorum, ama yanımda taşımayı tercih ettiğim kartlar mutlaka en çok kullandığım kartlar değil.
Meydan okuma
Bir kart yığını verildiğinde, cüzdanımın düzenini tercihlerim ve kısıtlamalarıma göre mümkün olan en iyi şekilde döndürün. Düzen aşağıdaki gibi olmalıdır:
__ __ (row 1)
__ __ (row 2)
__ __ (row 3)
__ __ (row 4)
Şu anda aşağıdaki kartları poz - yığınlar her zaman bunlardan bir seçim oluşur:
- 1 kimlik kartı ( ID )
- 1 sürücü belgesi ( DL )
- 2 kredi kartı ( CC )
- 5 banka kartı ( DC )
- 1 toplu taşıma kartı ( PC )
- 1 spor salonu erişim kartı ( GC )
- Rastgele mağaza ve depolardan 9 üyelik kartı ( MC )
Bazı tercihlerim ve kısıtlamalarım var:
- Önceliğe göre sıralanmış kartlar: Kimlik, DL, CC, DC, PC, GC, MC
- Kullanım sıklığına göre sıralanan kartlar: CC, DC, PC, GC, MC, ID, DL
- Güvenlik nedeniyle, cüzdanımdaki toplam banka kartı ve kredi kartı sayısı, cüzdanıma gidecek diğer tüm kartların toplamından en fazla 1 daha fazla olabilir ( N DC + N CC ≤ N ID + N DL + N PC + N GC + N MC +1).
- Varsa, kimlik kartım ve ehliyetim her zaman 1. sıraya girmelidir. Bu, diğer kartların 1. sıradaki noktaları işgal edemeyeceği anlamına gelmez.
- Yığından en sık kullanılan kartlar her zaman 4. satıra gitmelidir.
kurallar
- Aynı yerde 2 kart kullanılamaz.
- DC / CC kısıtlaması devreye girmedikçe, yüksek öncelikli kartlar her zaman düşük öncelikli kartlara tercih edilir.
- 1. satırdaki ID / DL, frekans kuralını geçersiz kılar: yalnızca ID sağlanırsa, 1. satıra gider ve 4. satır boş olur!
- Giriş yığınının sırası korunduğu sürece, giriş biçimlendirme istediğiniz şekilde yapılabilir. örn .
ID,CC,PC,MC,MC,MC,DL
, örn.1ID 1CC 1PC 3MC 1DL 0DC 0GC
veyaID CC PC MC MC MC DL
. Çıktı biçimlendirmesinin birkaç kısıtlaması vardır: satırların tümü yeni bir satırda başlamalı, sütunlar bir şekilde sınırlandırılmalıdır. 4x2 düzenini bozmadığı sürece boş noktalar istediğiniz şekilde sunulabilir.
Birden fazla çözüm / sipariş olabilir, çıktı olarak hangisini sağladığınıza bağlıdır.
- Aynı tür kartların her zaman girişte gruplandırılacağını varsayabilirsiniz.
- Yukarıdakilerin dışında standart kod golf kurallar ve boşluklar geçerlidir.
Bonus
Cüzdana gitmeyen kartları da iade ederseniz, bayt hesabınızın % 15'ini kaldırmanıza izin verilir . Yazdır "Uyuyor!" kart kalmadığında. Bu ek çıktı, geri ödeme düzeninden açıkça ayrılmalıdır.
Örnekler
Giriş:
ID, DL, CC, GC, MC
2 olası çıkış:
ID DL DL ID
__ __ or __ MC
MC __ __ __
CC GC GC CC
optional: It fits!
Giriş:
ID, CC, DC, PC, GC, MC, MC, MC, MC, MC
2 olası çıkış:
ID MC GC ID
MC MC or MC PC
PC GC MC MC
CC DC DC CC
optional: e.g. (MC, MC) or (2MC)
Giriş:
DC, DC, CC, CC, GC, DL
2 olası çıkış:
DL __ GC DL
__ __ or DC __
GC DC __ __
CC CC CC CC
optional: e.g. (DC) or (1DC)
Giriş:
CC, DC, DC, DC
2 olası çıkış:
__ __ __ __
__ __ or __ __
__ __ __ __
CC __ __ CC
optional: e.g. (DC, DC, DC) or (3DC)
Giriş:
CC, CC, MC, MC, MC, MC, MC, MC, PC, DC, DC, DC, DC, DC, GC
2 olası çıkış:
MC MC MC DC
PC GC or DC GC
DC DC PC MC
CC CC CC CC
optional: e.g. (DC, DC, DC, MC, MC, MC, MC) or (3DC, 4MC)
Giriş:
MC, MC, MC, MC, MC, MC, MC
2 olası çıkış:
__ MC MC MC
MC MC or MC MC
MC MC MC __
MC MC MC MC
optional: It fits!
Giriş:
ID, CC
2 olası çıkış:
ID __ __ ID
__ __ or __ __
__ __ __ __
CC __ CC __
optional: It fits!
Bu kod golf, böylece en kısa kod (bayt cinsinden) kazanır.