Herausforderung
Schreiben Sie eine Funktion oder ein Programm mit einer positiven Dezimalzahl, nennen Sie es A und geben Sie zwei positive Zahlen, B und C , aus, so dass:
- A == B bitxor C
- B und C dürfen in ihrer Dezimaldarstellung keine der Ziffern 0, 3 oder 7 enthalten.
Beispiele
>>> decompose(3)
1, 2
>>> decompose(7)
1, 6
>>> decompose(718)
121, 695
>>> decompose(99997)
2, 99999
>>> decompose(4294967296)
4294968218, 922
>>> decompose(5296080632396965608312971217160142474083606142654386510789497504098664630388377556711796340247136376)
6291484486961499292662848846261496489294168969458648464915998254691295448225881546425551225669515922,
1191982455588299219648819556299554251659915414942295896926425126251962564256469862862114191986258666
Da die Zerlegung nicht eindeutig ist, muss Ihre Funktion / Ihr Programm nicht genau die gleichen Ergebnisse ausgeben wie diese Beispiele.
Sehr detaillierte Regeln
Die Einreichung sollte in Form einer vollständigen Funktion oder eines vollständigen Programms erfolgen .
import
Aussagen noch auf die Endnote zählen.Sie können davon ausgehen, dass der Eingang A immer mindestens eine Ziffer von 0, 3 oder 7 enthält.
Sie können davon ausgehen, dass eine Zerlegung immer existiert.
Sie können BigInt verwenden, wenn sie Teil der Standardbibliotheken der Sprache sind oder über den De-Jure- Paketmanager der Sprache installiert werden können .
Die Funktion sollte schnell sein. Es sollte nicht länger als 20 Sekunden dauern , um auf einem einigermaßen modernen Computer ausgeführt zu werden, wenn eine 100-stellige Zahl eingegeben wird, und nicht länger als 2 Sekunden, wenn eine 10-stellige Zahl eingegeben wird.
Die Funktion / das Programm sollte die Eingabe von mindestens 100 Stellen unterstützen .
- Wenn die Funktion / das Programm nur Ganzzahlen mit bis zu N <100 Stellen unterstützt, wird der Endpunktzahl eine Strafe von + 10 × (100 / N - 1) Bytes auferlegt. Dies soll Golfer ermutigen, einen größeren Zahlenbereich zu unterstützen, auch wenn der Import ausführlich ist.
Die Darstellung von Ein- / Ausgängen unterliegt keiner Einschränkung, solange sie eindeutig dezimal dargestellt werden.
- Die Funktion kann Strings / BigInts ein- und ausgeben, wenn die integrierten Integer-Typen nicht ausreichen.
- Die Eingabe kann vom Funktionsparameter, Befehlszeilenargument oder STDIN stammen.
- Die Funktion kann das Ergebnis zurückgeben oder das Ergebnis direkt an STDOUT ausgeben.
- Ein vorzeichenbehafteter Überlauf in den Ein- / Ausgängen ist jedoch nicht zulässig.
- Ungefähre Antworten werden nicht toleriert, die Ein- / Ausgaben müssen genau sein.
Wertung
Dies ist ein Code-Golf . Kürzeste Lösung in Bytes gewinnen.
Es gibt eine Strafe, wenn das Programm nur Nummern mit weniger als 100 Stellen unterstützt:
- 64-Bit-Ganzzahlen (19 Stellen) = +42 Byte
- 63-Bit-Ganzzahlen (18 Stellen) = +45 Bytes
- 53-Bit-Ganzzahlen (15 Stellen) = +56 Byte
- 31/32-Bit-Ganzzahlen (9 Stellen) = +101 Byte