Düzenleme: Sorunun sonunda ödül bulmaca.
1 basamaklı sayılar kümesi verildiğinde, bir kulenin ne kadar yüksek inşa edebileceklerini belirlemelisiniz.
Rakamlar, durabilecekleri yer seviyesiyle yatay bir düzlemde yaşar. Hiçbir basamak çok basamaklı bir sayıyla karıştırılmak istemez, bu nedenle her iki tarafında da boş bir alan vardır.
4 2 1 9 6 8
Bir rakam diğerinin üzerinde olabilir:
2
6
veya altında çapraz olarak diğer iki kişi tarafından desteklenebilir:
9
5 8
Alttaki (ler), üstteki kişinin (varsa) desteklediği ağırlığı ve üstteki kişinin her zaman 1 olan ağırlığını desteklemesi gerekir . İki destekçi varsa, üst kişinin toplam ağırlığını eşit olarak bölerler (% 50-% 50).
Her basamağın ağırlığı, değerinden bağımsız olarak 1'dir.
Eğer bir rakam diğer iki tanesini destekliyorsa, karşılık gelen ağırlıklarının toplamını destekleyebilmelidir. Bir rakam en fazla sayısal değerini destekleyebilir.
Bazı geçerli kuleler (yükseklikleri 4
olan 3
ve 5
):
0
7 1
5 1 1 1 9 supports a total weight of 1.5 = (1+1/2)/2 + (1+1/2)/2
2 5 4 5 5
3 5 9 5 5 6 3 6 supports a total weight of 3 = 1.5 + 1.5 = (2*1+(2*1/2))/2 + (2*1+(2*1/2))/2
Bazı geçersiz kuleler:
1 5 The problems with the towers are (from left to right):
1 12 2 3 8 1 can't support 1+1; no space between 1 and 2;
1 5 6 1 1 1 9 1 can't support 1.5 = (1+1/2)/2 + (1+1/2)/2; 8 isn't properly supported (digits at both bottom diagonals or exactly below the 8)
Girdi çıktıları olarak bir basamak listesi veren veya bu basamağın bir kısmını (belki tümünü) kullanarak inşa edilebilir en yüksek kulenin yüksekliğini döndüren bir program veya işlev yazmalısınız.
Giriş
- En az bir öğe içeren negatif olmayan tek basamaklı sayıların listesi.
Çıktı
- Tek bir pozitif tam sayı, en yüksek inşa edilebilir kulenin yüksekliği.
- Çözümünüzün bilgisayarımdaki herhangi bir örnek test vakasını bir dakikadan az bir sürede çözmesi gerekiyor (sadece yakın vakaları test edeceğim. Ortalamanın altında bir bilgisayarım var.).
Örnekler
Biçim, Input list => Output number
çıktının bir parçası olmayan sonraki satırlarda olası bir kule ile.
[0] => 1
0
[0, 1, 1, 1, 1, 1] => 3
0
1
1 1
[1, 1, 1, 1, 1, 2, 2] => 4
1
1
1 1
1 2 2
[0, 0, 2, 2, 2, 2, 2, 5, 5, 5, 7, 7, 9] => 9
0
2
2
5
5
5
7
7
9
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] => 9
1
2
2
3
4
5
3 3
4 4 4
5 5 5 5
[0, 0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 7, 7, 9] => 11
0
1
2
3
4
5
3 3
4 5
5 5
3 7 3
2 7 9 2
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9] => 12
0
1
2
3
4
5
6
7
4 5
6 7
8 8
9 9
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9] => 18
0
1
2
3
4
5
6
7
8
9
5 5
6 6
7 7
4 8 4
3 7 7 3
2 6 8 6 2
2 5 8 8 5 2
3 9 9 9 9 3
Bu kod golf, bu yüzden en kısa giriş kazanır.
cömertlik
Polinom zamanında (giriş listesinin uzunluğu ile ilgili olarak) aşağıdaki genişletilmiş problemi çözmek için (zaten verilen ödülle ilgili olmayan) 100 itibar ödülü vereceğim veya bunun mümkün olmadığını kanıtlayacağım (P! = NP varsayarak). Genişletilmiş sorunun ayrıntıları:
- girdi sayıları yalnızca rakam değil, negatif olmayan tamsayılar olabilir
- çok basamaklı sayılar tek basamaklı sayılarla aynı yeri alır
- çok basamaklı sayılar sayısal değerleri
24
destekleyebilir, örn.24
Ödül teklifinin son kullanma tarihi yoktur. Bir kanıt görünürse ödülü ekleyeceğim ve ödüllendireceğim.
3-2-5-7
kule beni karıştırır. "En alttaki (ler), üstteki kişinin (varsa) desteklediği ağırlığı, artı olanın her zaman 1 olan ağırlığını desteklemesi gerektiğini söylüyorsunuz. 'sayısal değeri' - eğer her basamağın ağırlığı bir ise, farklı sayıya sahip olmanın anlamı nedir?