(Questa è la mia prima domanda sul codice-golf)
Quando ero bambino, mio padre e io abbiamo inventato un gioco in cui la targa che vediamo sulle auto può dare alcuni punti basati su alcune regole piuttosto semplici:
La quantità X della stessa lettera o numero indica X-1 punti, esempi:
22 = 1 point
aa = 1 point
5555 = 3 points
I numeri devono essere uno accanto all'altro, quindi 3353
fornisce solo 1 punto, poiché il 5 interrompe la sequenza dei 3.
Una sequenza di X numeri in ordine crescente o decrescente, almeno 3, fornisce X punti, esempi:
123 = 3 points
9753 = 4 points
147 = 3 points
Il sistema di punti funziona solo con numeri di 1 cifra, quindi 1919
non dà punti e 14710
dà solo 3, (147).
Le sequenze possono essere combinate per creare più punti, esempi:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
Non ti è tuttavia permesso di tagliare una sequenza più grande in 2 sequenze più piccole per ottenere punti extra: 1234 = 123, 234 (6 points)
non è permesso.
Il tuo compito è, in base a una sequenza, determinare il numero di punti assegnati dalla targa.
In Danimarca, le targhe sono strutturate in questo modo: CC II III, dove C è carattere e I è intero, e quindi i miei input di esempio rispecchieranno questa struttura. Se lo desideri, puoi adattare la sequenza alla tua struttura o, se ti senti davvero avventuroso, lasciare che il programma analizzi la struttura della targa e quindi funzioni su qualsiasi tipo di targa in tutto il mondo. Indica esplicitamente la struttura che decidi di utilizzare nella tua risposta.
Puoi prendere l'input nel modo che preferisci, o una stringa o un array sembrano avere più senso per me.
Test input | produzione:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
A causa della natura della scelta della propria struttura, o persino della copertura di tutte le strutture, non vedo necessariamente come un vincitore possa essere esplicitamente determinato. Suppongo che il vincitore sarà il byte più breve sulla struttura che uno ha deciso. (E non prendere un input come CICIC, solo per renderti facile per te)
MODIFICARE:
A causa di commenti, ho alcune informazioni in più da condividere: una sequenza di numeri crescente o decrescente si riferisce a una sequenza aritmetica, quindi X +/- a * 0, X +/- a * 1, ... X +/- a * n ecc. Quindi 3-5-7 ad esempio è 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2. Tuttavia, la sequenza non deve iniziare da 0 né terminare tra 0.
ALTRE MODIFICHE:
Puoi dare l'input nel modo che preferisci, non è necessario inserire spazi, trattini o qualsiasi altra cosa che renda più leggibile una targa. Se puoi salvare byte accettando solo lettere maiuscole o qualcosa del genere, puoi farlo anche tu. L'unico requisito è che il tuo programma possa prendere una stringa / matrice / qualsiasi cosa che contenga sia caratteri che numeri, e produrre la giusta quantità di punti secondo le regole stabilite.
XX 87 654
. Ho trovato qualcosa che era corretto per tutti i casi di test, ma in qualche modo errato per questo .. Sto lavorando per risolverlo.
CCIIIII
, senza spazi), altrimenti questo problema manca di un criterio oggettivo di vittoria, che richiediamo qui. Così com'è, "(E non dare un contributo come CICIC, solo per renderti facile per te)" è molto soggettivo. Cos'è e non è una struttura ammissibile?
IA99999
(contiene una sequenza decrescente di punti di codice, ma non numeri).