Sfida
Data una rappresentazione ASCII di un numero babilonese come input, genera il numero in numeri arabi occidentali.
Sistema numerico babilonese
Come contavano i babilonesi? È interessante notare che hanno usato un sistema Base 60 con un elemento di un sistema Base 10. Consideriamo innanzitutto la colonna unitaria del sistema:
I babilonesi avevano solo tre simboli: T
(o, se puoi renderlo:) 𒐕
che rappresentava 1, e <
(o, se puoi renderlo:) 𒌋
che rappresentava 10 e \
(o, se lo rendi:) 𒑊
che rappresentava zero.
Nota: tecnicamente, \
(o 𒑊
) non è zero (perché i babilonesi non avevano una nozione di "zero"). 'Zero' è stato inventato in seguito, quindi è \
stato aggiunto un simbolo segnaposto in seguito per evitare ambiguità. Tuttavia, ai fini di questa sfida, è sufficiente considerare \
zero
Quindi, in ogni colonna basta aggiungere il valore dei simboli, ad esempio:
<<< = 30
<<<<TTTTTT = 46
TTTTTTTTT = 9
\ = 0
Non ci saranno mai più di cinque <
o più di nove T
in ogni colonna. \
apparirà sempre solo nella colonna.
Ora, dobbiamo estenderlo per aggiungere più colonne. Funziona esattamente come qualsiasi altra base sessanta, dove moltiplichi il valore della colonna più a destra per , quello a sinistra per , quello a sinistra per e così via. Quindi aggiungi il valore di ciascuno per ottenere il valore del numero.
Le colonne saranno separate da spazi per evitare ambiguità.
Qualche esempio:
<< <TT = 20*60 + 12*1 = 1212
<<<TT \ TTTT = 32*60^2 + 0*60 + 4*1 = 115204
Regole
- Sei libero di accettare input ASCII (
T<\
) o input Unicode (𒐕𒌋𒑊
) - Il numero immesso sarà sempre inferiore a
- La
<
s sarà sempre alla sinistra dellaT
s in ogni colonna \
apparirà sempre solo in una colonna
vincente
Vince il codice più breve in byte.
<<<<TTTTTT <TTTTTTT <<<<TTTTTT <<<<
"How did the Babylonians count? Interestingly, they used a Base 60 system with an element of a Base 10 system."
Che è ancora in uso oggi; il sistema numerico babilonese è esattamente quello che usiamo per gli orologi. Due cifre decimali ciascuna per secondi, minuti e ore, 60 secondi al minuto, 60 minuti all'ora.