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 Tin 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 dellaTs 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.