Mini-golf del lunedì: una serie di sfide da golf a codice corto , pubblicate (si spera!) Ogni lunedì.
Una sequenza simile a Fibonacci è ottenuta usando lo stesso metodo della famosa sequenza di Fibonacci ; cioè, ogni numero F (n) viene trovato aggiungendo i due numeri precedenti nella sequenza ( F (n) = F (n-1) + F (n-2) ) o sottraendo i due numeri successivi ( F (n) = F (n + 2) - F (n + 1) ). La differenza principale è che queste sequenze possono iniziare con due numeri qualsiasi. L'indicizzazione zero di queste sequenze è discutibile, ma per ora useremo questa regola:
- Il numero 0 in una sequenza simile a Fibonacci è l'ultimo numero che è più piccolo del numero precedente.
Ad esempio, la sequenza di Fibonacci potrebbe essere scritta come 1, 0, 1, 1, 2, 3, 5...
, quindi il numero 0 nella sequenza è il solo 0
.
Sfida
L'obiettivo della sfida è scrivere un programma o una funzione che accetta tre numeri interi, in qualsiasi formato:
- A e B , i due numeri con cui iniziare a generare una sequenza.
- N , la lunghezza della sequenza risultante da emettere.
E genera i primi N numeri della sequenza, a partire dal 0 °.
Dettagli
- A , B e N possono essere presi in qualsiasi ordine e formato, purché siano visibilmente separati. Se usi un ordine / formato diverso, specifica di cosa si tratta.
- Puoi presumere che A , B e N siano sempre numeri interi positivi.
- Puoi supporre che N non sia più di 100 e che la sequenza risultante non conterrà
x >= 2^31
. - Se A è maggiore di B , allora B è il numero 0 nella sequenza.
- L'output deve essere separato da spazi, virgole e / o newline.
- È consentito uno spazio finale o una nuova riga, ma non una virgola finale.
Casi test
Esempio 1:
8 13 10
Lavorando all'indietro 8 13
fino a quando non troviamo un numero maggiore del precedente, otteniamo 13 8 5 3 2 1 1 0 1
. Pertanto, 0
è il numero 0 in questa sequenza. A partire da questo, stampiamo 0
e i prossimi 9 membri:
0 1 1 2 3 5 8 13 21 34
Esempio 2:
23 37 5
Troviamo di nuovo lavorando all'indietro per trovare il numero 0 37 23 14 9 5 4 1 3
. Il numero 0 questa volta è 1
, quindi lo stampiamo, insieme ai prossimi 4 membri:
1 4 5 9 14
Esempio 3:
4 3 8
Con questo, non dobbiamo lavorare all'indietro per trovare il numero 0, perché 3
è inferiore a 4
:
3 7 10 17 27 44 71 115
Esempio 4:
29 47 11
Risultato:
1 3 4 7 11 18 29 47 76 123 199
punteggio
Questo è code-golf , quindi vince il codice valido più breve in byte. Tiebreaker passa alla presentazione precedentemente pubblicata. Il vincitore verrà scelto lunedì prossimo, 28 settembre. Buona fortuna!
Modifica: Congratulazioni al tuo vincitore, @Jakube, usando Pyth per 23 byte incredibili !
[8, 13, 10]
)?