Bir *** ameoba grafiği ****, düğümlerin tümü 0'dan negatif olmayan bir tamsayı N'ye kadar değerleri olan ve x <N değerine sahip herhangi bir belirli düğüm, x + 1 değerlerine sahip x + 1 ayrı düğüme bağlanan bir ağaç türüdür. 1.
N Ameoba grafiktir 3 = (belirtilen bir 3 )
2'lerin 3'lerin hiçbirini paylaşmasına izin verilmediğine dikkat edin; tam olarak üç 3'ün her birine 2 ait olması gerekir.
Meydan okuma
Senin görevin, düğümler arasındaki Manhattan mesafesini açgözlülükle minimize ederek bu ameoba grafiklerini 2 boyutlu bir ızgarada endüktif olarak "büyütmek" :
- Temel durum: A 0 basitçe grafiktir
0
. - İndüktif adım: Yeni N + 1 değerli düğümleri, mevcut A N yapısındaki N değer düğümlerine tekrar tekrar mümkün olduğunca yakın yerleştirerek bir N + 1 üretilir . (Mümkün olduğunca yakın olabilir, çünkü en yakın noktalar zaten dolu olabilir.)
Tümevarım adımı için izlemeniz gereken genel prosedür:
for each existing node P with value N:
for each new N+1 valued node Q you need to connect to P: //this loops N+1 times
find the set of vacant spots that are minimally distant from P //by Manhattan distance
place Q in any of these vacant spots
(Ayrılmaz çıktı ile farklı bir prosedür uygundur.)
A 4 için büyüme örneği :
A0 is always the same:
0
For A1 I happen to put the 1 to the right of the 0 (it has to go on one of the 4 open sides):
01
For A2 I happen to put the two 2's above and to the right of the 1:
2
012
For A3 I find that one of the six 3's I must place cannot be directly next to a 2, so I put in one of the next closest places:
3
323
0123
33 <-- this 3 is distance two away from its 2
The process continues in A4. Note that I'm iterating over each 3 and placing four 4's next to it or as close as possible, then moving to the next 3 (the order of 3's does not matter):
444
443444
4323444
4012344
44334
4444
44
Always keep in mind that nodes cannot be "shared".
program
Yazdığınız program 0 ila 8 (dahil) arasında bir sayı almalı ve yukarıda açıklanan endüktif büyüme paternini kullanarak geçerli bir ameoba grafiği çıkarmalıdır.
8'in ötesinde ne olduğu önemli değil.
(A 8 , iten 46234 düğüm içerir. A 8'in ötesindeki her şey çok uzak olurdu. Bunu fark ettiği için Martin Büttner'e teşekkürler.)
Giriş stdin veya komut satırından gelmeli ve çıkış stdout veya bir dosyaya gitmelidir.
Örnekler (doğrudan yukarıdan alınmıştır)
Input: 0
Output:
0
Input: 1
Output:
01
Input: 2
Output:
2
012
Input: 3
Output:
3
323
0123
33
Input: 4
Output:
444
443444
4323444
4012344
44334
4444
44
* Bu tür grafiklerin zaten bir adı olabilir. Sadece uydurduğumu itiraf ediyorum. ;)