Prendi una regione 2D di spazio divisa in elementi quadrati di unità allineati ad asse con i loro centri allineati ad intervalli interi. Si dice che un bordo è interno se è condiviso da due elementi, altrimenti è un bordo esterno.
Il tuo obiettivo è trovare il numero minimo di elementi vicini che devono essere attraversati per raggiungere un bordo esterno a partire dal centro di ciascun elemento, noto come traversal distance
, o distance
in breve. Puoi attraversare solo un bordo (cioè nessun taglio dell'angolo / movimento diagonale). Si noti che gli "elementi esterni" (elementi che hanno almeno un bordo esterno) sono considerati necessari per attraversare gli 0
elementi vicini per raggiungere un bordo esterno.
Ingresso
L'input è un elenco di coordinate di coppie intere non negative che indicano la (x, y) del centro di tutti gli elementi. Si presume che non vi siano elementi sovrapposti (ovvero una coppia x / y identifica in modo univoco un elemento). Si può non assumere nulla circa l'ordine di ingresso elemento.
Siete invitati a trasformare l'origine dell'input in qualsiasi posizione (ad esempio 0,0 o 1,1, ecc.).
Si può presumere che tutti gli elementi di input siano collegati o, in altre parole, è possibile viaggiare da un elemento qualsiasi a qualsiasi altro elemento utilizzando le regole sopra. Si noti che ciò non significa che la regione 2D sia semplicemente connessa; potrebbe avere dei buchi all'interno.
Esempio: quanto segue è un input non valido.
0,0
2,0
non è richiesto il controllo degli errori.
L'input può provenire da qualsiasi sorgente (file, stdio, parametro della funzione, ecc.)
Produzione
L'output dovrebbe essere un elenco di coordinate che identificano ciascun elemento e la distanza intera corrispondente percorsa per arrivare a un bordo. L'output può essere nell'ordine degli elementi desiderato (ad es. Non è necessario che gli output siano nello stesso ordine ricevuto come input).
L'output può essere su qualsiasi sorgente (file, stdio, valore di ritorno della funzione, ecc.)
Qualsiasi output che corrisponde alla coordinata dell'elemento con la sua distanza esterna va bene, ad es. Tutti questi vanno bene:
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Esempi
Gli input di esempio di testo sono nella forma x,y
, con un elemento per riga; sei libero di ridisegnarlo in un comodo formato di input (vedi regole del formato di input).
Gli output di esempio di testo sono nel formato x,y: distance
, con un elemento per riga; di nuovo, puoi rimodellarlo in un comodo formato di output (vedi regole del formato di output).
Le figure grafiche hanno il limite inferiore sinistro come (0,0) e i numeri all'interno rappresentano la distanza minima prevista percorsa per raggiungere un bordo esterno. Si noti che queste cifre sono puramente a scopo dimostrativo; il tuo programma non ha bisogno di emetterli.
Esempio 1
ingresso:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
Produzione:
1,0: 0
3,0: 0
0,1: 0
1,2: 0
1,1: 1
2,1: 0
4,3: 0
3,1: 0
2,2: 1
2,3: 0
3,2: 0
3,3: 0
rappresentazione grafica:
Esempio 2
ingresso:
4,0
1,1
3,1
4,1
5,1
6,1
0,2
1,2
2,2
3,2
4,2
5,2
6,2
7,2
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
2,4
3,4
4,4
5,4
6,4
3,5
4,5
5,5
produzione:
4,0: 0
1,1: 0
3,1: 0
4,1: 1
5,1: 0
6,1: 0
0,2: 0
1,2: 1
2,2: 0
3,2: 1
4,2: 2
5,2: 1
6,2: 1
7,2: 0
1,3: 0
2,3: 1
3,3: 2
4,3: 2
5,3: 2
6,3: 1
7,3: 0
8,3: 0
2,4: 0
3,4: 1
4,4: 1
5,4: 1
6,4: 0
3,5: 0
4,5: 0
5,5: 0
rappresentazione grafica:
Esempio 3
ingresso:
4,0
4,1
1,2
3,2
4,2
5,2
6,2
8,2
0,3
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
1,4
2,4
3,4
4,4
5,4
6,4
7,4
8,4
9,4
2,5
3,5
4,5
5,5
6,5
9,5
10,5
11,5
3,6
4,6
5,6
9,6
10,6
11,6
6,7
7,7
8,7
9,7
10,7
11,7
produzione:
4,0: 0
4,1: 0
1,2: 0
3,2: 0
4,2: 1
5,2: 0
6,2: 0
8,2: 0
0,3: 0
1,3: 1
2,3: 0
3,3: 1
4,3: 2
5,3: 1
6,3: 1
7,3: 0
8,3: 1
9,3: 0
1,4: 0
2,4: 1
3,4: 2
4,4: 2
5,4: 2
6,4: 1
7,4: 0
8,4: 0
9,4: 0
2,5: 0
3,5: 1
4,5: 1
5,5: 1
6,5: 0
9,5: 0
10,5: 0
11,5: 0
3,6: 0
4,6: 0
5,6: 0
9,6: 0
10,6: 1
11,6: 0
6,7: 0
7,7: 0
8,7: 0
9,7: 0
10,7: 0
11,7: 0
rappresentazione grafica:
punteggio
Questo è il codice golf. Vince il codice più breve in byte. Si applicano scappatoie standard. Sono consentiti qualsiasi componente aggiuntivo diverso da quelli specificamente progettati per risolvere questo problema.