"Fit Numbers"
Sam hat eine "geniale" Idee für die Komprimierung! Kannst du helfen?
Hier ist ein Überblick über Sams Komprimierungsschema. Nehmen Sie zunächst eine Basis 10-Darstellung einer natürlichen Zahl, die streng kleiner als 2 ^ 16 ist, und schreiben Sie sie als Binärzeichenfolge ohne führende Nullen.
1 -> 1 9 -> 1001 15 -> 1111 13 -> 1101 16 -> 10000 17 -> 10001 65535 -> 111111111111111
Ersetzen Sie nun eine Gruppe von einer oder mehreren Nullen durch eine einzelne Null. Dies liegt daran, dass die Zahl magerer geworden ist. Ihre Binärzeichenfolge sieht jetzt so aus.
1 -> 1 -> 1 9 -> 1001 -> 101 15 -> 1111 -> 1111 13 -> 1101 -> 1101 16 -> 10000 -> 10 17 -> 10001 -> 101 65535 -> 111111111111111 -> 111111111111111
Jetzt konvertieren Sie die Binärzeichenfolge zurück in eine Basis 10-Darstellung und geben sie in einem beliebigen akzeptablen Format aus. Hier sind Ihre Testfälle. Die erste Ganzzahl repräsentiert eine Eingabe und die letzte Ganzzahl repräsentiert eine Ausgabe. Beachten Sie, dass sich einige Zahlen nicht ändern und daher als "fit" bezeichnet werden können.
1 -> 1 -> 1 -> 1 9 -> 1001 -> 101 -> 5 15 -> 1111 -> 1111 -> 15 13 -> 1101 -> 1101 -> 13 16 -> 10000 -> 10 -> 2 17 -> 10001 -> 101 -> 5 65535 -> 1111111111111111 -> 11111111111111 -> 65535 65000 -> 1111110111101000 -> 11111101111010 -> 16250
Sie können jede Sprache verwenden, aber bitte beachten Sie, dass Sam Standardlücken hasst. Dies ist Codegolf, damit der Code so kurz wie möglich ist, um Platz für die "komprimierten" Zahlen zu schaffen.
Hinweis: Dies ist KEIN akzeptables Komprimierungsschema. Wenn Sie dies verwenden, werden Sie sofort gefeuert.
Citation-Needed: Ich kann dieses Konzept nicht würdigen. Das kommt von @Conor O‘Brien Blog hier sehen diese OEIS Passnummern. https://oeis.org/A090078
10000
?