Inspiriert von diesem Beitrag über Rätsel. Die Spoiler für dieses Rätsel finden Sie weiter unten.
Wenn Sie drei positive Ganzzahlen als Eingabe haben (x, y, z)
, konstruieren Sie den Einschlussbereich [x, y]
, verknüpfen Sie diesen Bereich und entfernen Sie dann z
nicht unbedingt aufeinanderfolgende Ziffern, um die größtmöglichen und kleinsten positiven Ganzzahlen zu erhalten. Führende Nullen sind nicht zulässig (dh die Zahlen müssen mit beginnen [1-9]
). Gib diese beiden Zahlen in beliebiger Reihenfolge aus.
Für das Beispiel aus der Rätselhafte Post, für die Eingabe (1, 100, 100)
möglich , die größte Zahl ist 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100
,
und die kleinste Zahl ist 10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100
, im
Anschluss an dem unten Logik von JAFE der Antwort gepostet dort:
- Wir können die Länge der Zahl nicht beeinflussen (es gibt eine feste Anzahl von Stellen). Um den Wert zu maximieren, nehmen wir die maximale erste Stelle, dann die zweite Stelle usw.
- Entfernen Sie die 84 ersten Nicht-Neunen (16 Stellen müssen noch entfernt werden):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- Die größte Zahl innerhalb der nächsten 17 Ziffern ist 7, daher kann die nächste Ziffer in der Antwort höchstens 7 sein (wir können nicht mehr als 16 Ziffern entfernen). Entfernen Sie also 15 Nicht-7-Zeichen ... (1 Ziffer muss noch entfernt werden):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- Von hier aus kann die nächste Ziffer höchstens 8 sein, entfernen Sie also eine Nicht-8 aus der Mitte:
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- Ähnliche Logik, aber umgekehrt (dh wir wollen führende
1
s anstelle von führenden9
s) für die kleinste Zahl.
Hier ist ein kleines Beispiel: (1, 10, 5)
.
Wir konstruieren den Bereich 12345678910
und bestimmen, welche 5
Ziffern wir entfernen können, wobei die größtmögliche Anzahl übrig bleibt. Dies bedeutet natürlich, dass wir die führende Ziffer maximieren möchten, da wir die Länge der Ausgabe nicht beeinflussen können. Wenn wir also entfernen 12345
, bleibt uns nichts anderes übrig 678910
, und das ist das größte, was wir machen können. Das kleinste zu machen ist ein bisschen schwieriger, da wir stattdessen Zahlen aus der Mitte herauszupfen können, um 123410
das kleinstmögliche zu erhalten.
Denn (20, 25, 11)
das Ergebnis ist eher langweilig, als 5
und 1
.
Schließlich, um Antworten auszuschließen, die führende Nullen versuchen, (9, 11, 3)
gibt 91011
das wiederum 91
und 10
als die größten und kleinsten.
I / O und Regeln
- Wenn es einfacher / kürzer ist, können Sie zwei Programme / Funktionen codieren - eines für das größte und eines für das kleinste. In diesem Fall ist Ihre Punktzahl die Summe beider Teile.
- Die Eingabe und Ausgabe kann durch jede bequeme Methode erfolgen .
- Die Eingabe kann davon ausgegangen werden in Ihrer Sprache nativen Nummerntyp passen, jedoch weder die verkettete Nummer noch der Ausgang kann so tun , angenommen werden.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
9, 11, 3
würde es tun.