Ispirato da questo post su Puzzling. Gli spoiler per quel puzzle sono qui sotto.
Dati tre interi positivi come input, (x, y, z)costruisci l'intervallo inclusivo [x, y], concatena quell'intervallo insieme, quindi rimuovi zle cifre non necessariamente consecutive per produrre gli interi positivi più grandi e più piccoli possibili. Gli zeri iniziali non sono consentiti (ovvero, i numeri devono iniziare con [1-9]). Emetti quei due numeri in entrambi gli ordini.
Per l'esempio dal posto imbarazzo, per l'ingresso (1, 100, 100), il maggior numero possibile è 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100,
e il numero più piccolo è 10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100,
seguendo la logica seguito da di jafe risposta PUBBLICATE:
- Non possiamo influenzare la lunghezza del numero (c'è un numero fisso di cifre), quindi per massimizzare il valore prendiamo la prima cifra massima, quindi la seconda cifra ecc.
- Rimuovi le prime 84 non-nove (16 cifre rimaste per rimuovere):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Il numero più grande entro le successive 17 cifre è 7, quindi da qui la cifra successiva nella risposta può essere al massimo 7 (non possiamo rimuovere più di 16 cifre). Quindi rimuovi 15 non-7 ... (1 cifra rimasta per rimuovere):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Da qui, la cifra successiva può essere al massimo 8, quindi rimuovi una non-8 dal centro:
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Logica simile, ma invertita (vale a dire, desideriamo
1s iniziali anziché iniziali9s) per il numero più piccolo.
Ecco un esempio più piccolo: (1, 10, 5).
Costruiamo l'intervallo 12345678910e determiniamo quali 5cifre possiamo rimuovere lasciando il numero più grande possibile. Ovviamente, ciò significa che vogliamo massimizzare la cifra iniziale, poiché non possiamo influenzare la lunghezza dell'output. Quindi, se rimuoviamo 12345, ci rimane 678910, e questo è il più grande che possiamo fare. Rendere il più piccolo è un po 'più complicato, dal momento che possiamo cogliere i numeri dal centro, lasciando 123410il più piccolo possibile.
Perché (20, 25, 11), il risultato è piuttosto noioso, come 5e1 .
Infine, per escludere le risposte che provano a condurre gli zeri, si (9, 11, 3)ottiene 91011che a sua volta produce 91e10 come il più grande e il più piccolo.
I / O e regole
- Se è più facile / più breve, puoi codificare due programmi / funzioni - uno per il più grande e uno per il più piccolo - nel qual caso il tuo punteggio è la somma di entrambe le parti.
- L'input e l'output possono essere forniti con qualsiasi metodo conveniente .
- Si può presumere che l'input si adatti al tipo di numero nativo della tua lingua, tuttavia , né il numero concatenato né l'output possono essere considerati come tali.
- È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
- Sono vietate le scappatoie standard .
- Si tratta di code-golf, quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).
9, 11, 3lo farebbe.