introduzione
La sfida di oggi riguarda i denti. In particolare, quanto tempo ci vuole per spazzolare da un dente all'altro. La tua sfida è, date le posizioni di due denti, produrre il minor tempo possibile per spazzolare dal primo al secondo.
Sfida
Per questa sfida useremo un layout di una bocca umana adulta media:
Questo diagramma mostra il sistema di numerazione ISO ampiamente utilizzato . Il sistema divide la bocca in quattro parti e assegna a ciascuna un numero: in alto a destra (1), in alto a sinistra (2), in basso a sinistra (3) e in basso a destra (4). Quindi numerano i denti di ogni sezione dal centro della bocca fuori da 1-8. Pertanto il quarto dente dal centro nella parte in alto a destra (sezione 1) è il numero 14 del dente.
Supponiamo che lavarsi un dente richieda 1 unità di tempo. Passare da un dente all'altro lateralmente richiede 0 unità di tempo. Puoi anche passare da un dente al dente direttamente sopra o sotto di esso, il che richiede anche 1 unità di tempo. Quindi quanto tempo impieghi a spazzolare dal dente 14 al dente 31? Guardando il diagramma sopra, vedrai che ci vogliono 7 unità di tempo. Ecco come viene calcolato:
Action : Unit of time
Brushing tooth 14 : 1 unit
Brushing tooth 13 : 1 unit
Brushing tooth 12 : 1 unit
Brushing tooth 11 : 1 unit
Brushing tooth 21 : 1 unit
Cross to bottom of mouth : 1 unit
Brushing tooth 31 : 1 unit
------------------------------
Total: 7 units
Nota che il suo non è l'unico percorso che avremmo potuto prendere, ma non ci sono percorsi più brevi.
Quindi la tua sfida è:
- Scriverai un programma o una funzione completa che accetta due argomenti che sono numeri di denti e restituisce (o restituisce) il tempo più breve per passare da uno all'altro.
- Prendi input come numeri o stringhe e produci quanto desideri ( con metodi accettabili ).
- Le scappatoie standard sono vietate per impostazione predefinita.
- Questa domanda è code-golf , quindi vince il numero di byte più breve.
Ecco alcune prove ( grazie Jonathan Allan ):
14, 21 => 5 14, 44 => 3 14, 14 => 1 33, 37 => 5
In bocca al lupo!
