Arka fon
On iki bozuk para sorunu, iş görüşmelerinde yaygın olarak kullanılan klasik bir denge bulmacasıdır . Bulmaca ilk olarak 1945'te ortaya çıktı ve annemle evlenmek istediğinde büyükbabam tarafından babama gönderildi! Bulmacada, biri diğerinden daha ağır veya daha hafif olan on iki para vardır (hangisini bilmediğiniz). Sorun, benzersiz parayı belirlemek için üç kez bir denge skalası kullanmaktır. Bazı varyasyonlarda, madalyonun daha ağır veya daha hafif olup olmadığını belirlemek gerekir.
Buradaki görev , en kötü durumda mümkün olan en az ağırlığı kullanarak, n jeton içeren genel sorunun çözülmesini içerir . Madalyonun daha ağır mı yoksa daha hafif mi olduğunu tanımlamak gerekli değildir, sadece hangisi olduğunu. Ayrıca, verilen setin dışında ek paralara erişemezsiniz (bu, merakla bir fark yaratır).
K tartımlarının (3 ^ k-1) / 2 jetona kadar yeterli olduğu ortaya çıkıyor (bu nedenle bu varyasyondaki 4 tartım aslında 13 jetonu işleyebilir). Ayrıca (ve şaşırtıcı bir şekilde), gelecekteki tartımların geçmiş sonuçlara bağlı olmasını değil, tüm tartım setini önceden seçmek mümkündür (ancak burada gerekli değildir). İki olası çözümün açıklaması için bu makaleye ve Quora cevabına bakın .
Görev
STDIN, komut satırı bağımsız değişkeni veya işlev bağımsız değişkeni yoluyla girdi olarak n tamsayısını alarak , en kötü durumda mümkün olan en az ağırlığı kullanarak n sikke sorununu çözen bir işlev veya program yazın . Program:
1,2,3-4,5,6
Terazinin her iki yanındaki bozuk para listelerini belirtmek için tartımları STDOUT biçiminde yazdırın . Tartılmayan herhangi bir bozuk para belirtilmemelidir. Paralar dolaylı olarak 1'den n'ye kadar numaralandırılmıştır ve sayısal sırayla basılmasına gerek yoktur (yani2,1-3,4
ile aynıdır1,2-3,4
).- Her tartımdan sonra, program STDIN üzerinden
<
,=
ya>
da ölçeğin sol tarafının sağ taraftan daha hafif, aynı mı yoksa daha ağır mı olduğunu gösteren bir girişi beklemelidir . - Son tartım sonucundan sonra, program benzersiz parayı yazdırmalı veya iade etmelidir.
- Program, kullanıcıdan gelen tutarsız sonuç girişlerini işlemek zorunda değildir.
- Programın n'den küçük olması gerekmez .
Örnek çıktılar
>> 3
1-2
>> =
1-3
>> <
3
# using Quora algorithm
>> 13
1,2,3,4-5,6,7,8
>> <
1,2,5-3,4,6
>> >
3-4
>> <
3
# using paper algorithm
>> 13
1,2,3,4-5,6,7,8
>> <
2,6,7,9-3,8,10,11
>> >
6,8,10,12-4,5,7,11
>> =
3
puanlama
En kısa kod kazanır. Standart kurallar geçerlidir.