Sfida
Scrivi una funzione o un programma che accetta un numero decimale positivo, chiamalo A e genera due numeri positivi, B e C , in modo che:
- A == B bitxor C
- B e C non devono contenere nessuna delle cifre 0, 3 o 7 nella sua rappresentazione decimale.
Esempi
>>> decompose(3)
1, 2
>>> decompose(7)
1, 6
>>> decompose(718)
121, 695
>>> decompose(99997)
2, 99999
>>> decompose(4294967296)
4294968218, 922
>>> decompose(5296080632396965608312971217160142474083606142654386510789497504098664630388377556711796340247136376)
6291484486961499292662848846261496489294168969458648464915998254691295448225881546425551225669515922,
1191982455588299219648819556299554251659915414942295896926425126251962564256469862862114191986258666
Poiché la decomposizione non è unica, la tua funzione / programma non ha bisogno di produrre esattamente gli stessi risultati di questi esempi forniti.
Regole molto dettagliate
Le presentazioni devono essere sotto forma di una funzione o un programma completi .
import
dichiarazioni non contano ai fini del punteggio finale.Si può presumere che l'ingresso A contenga sempre almeno una cifra di 0, 3 o 7.
Si può presumere che esista sempre una decomposizione.
Puoi usare BigInt se fanno parte delle librerie standard della lingua o possono essere installate tramite il gestore pacchetti de jure della lingua .
La funzione dovrebbe essere veloce. Non dovrebbero essere necessari più di 20 secondi per essere eseguiti su un computer ragionevolmente moderno se alimentato con un numero di 100 cifre e non più di 2 secondi se alimentato con un numero di 10 cifre.
La funzione / programma dovrebbe supportare input fino ad almeno 100 cifre .
- Se la funzione / programma può supportare solo numeri interi fino a N <100 cifre, ci sarà una penalità di + 10 × (100 / N - 1) byte per il punteggio finale. Questo per incoraggiare i golfisti a supportare una gamma più ampia di numeri anche se l'importazione può essere dettagliata.
Non ci sono restrizioni alla presentazione di input / output purché siano chiaramente in rappresentazione decimale.
- La funzione può immettere e generare stringhe / BigInts se i tipi interi integrati non sono sufficienti.
- L'input può provenire dal parametro della funzione, dall'argomento della riga di comando o da STDIN.
- La funzione può restituire il risultato o semplicemente stampare il risultato direttamente su STDOUT.
- Tuttavia, l'overflow con segno negli input / output non è consentito.
- Le risposte approssimative non sono tollerate, gli input / output devono essere esatti.
punteggio
Questo è un codice-golf . La soluzione più breve in byte vince.
C'è una penalità se il programma può supportare solo numeri inferiori a 100 cifre:
- Numeri interi a 64 bit (19 cifre) = +42 byte
- Numero intero a 63 bit (18 cifre) = +45 byte
- Numeri interi a 53 bit (15 cifre) = +56 byte
- Numeri interi 31/32 bit (9 cifre) = +101 byte