Stellen Sie sich eine Brücke der Länge B vor, die aus Kacheln besteht, die mit den Ziffern der verketteten positiven ganzen Zahlen gekennzeichnet sind. Wenn B beispielsweise 41 wäre, würde es so aussehen:
----------------------------------------- 12345678910111213141516171819202122232425
Stellen Sie sich nun einen Zug der Länge T vor , der die Brücke überquert. Der am weitesten links liegende Punkt des Zuges beginnt an Position X (1-indexiert). Um das Problem besser zu verstehen, erstellen wir ein Schema des Ereignisses mit B = 41, T = 10, X = 10 . Der Zug wird mit Gleichheitszeichen ( =
) und Linien gezeichnet :
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425
Der Zug kann bei jedem Schritt um die Summe der einzigartigen Kacheln vorrücken, auf denen er sich befindet. Zum Beispiel sind die Kacheln, auf denen der Zug oben steht, : [1, 0, 1, 1, 1, 2, 1, 3, 1, 4]
, die eindeutigen (deduplizierten) Kacheln: [1, 0, 2, 3, 4]
und ihre Summe ist 10
. Daher kann der Zug durch 10
Kacheln vorrücken . Wir sollten es erneut zeichnen und den Vorgang wiederholen, bis der am weitesten links stehende Punkt des Zuges die letzte Kachel passiert hat:
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Summe der einzigartigen Kacheln: 1 + 5 + 6 + 7 + 8 + 9 = 36. Der Zug rückt um 36 Kacheln vor ... __________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Der Zug überquerte offensichtlich die Brücke vollständig, also sollten wir jetzt anhalten.
Da sich die Leute im Haus langweilen, zählen sie jedes Mal die Kacheln, die der Zug vorgerückt hat. In diesem speziellen Fall 10
und 36
. Zusammenfassend hat sich der Zug bewegt, 46
bevor er die Brücke passiert hat.
Aufgabe
Bei drei positiven ganzen Zahlen, B (die Brückenlänge), T (die Zuglänge) und X (die Startposition, 1-indiziert ), müssen Sie bestimmen, wie viele Kacheln der Zug bewegt hat, bis er die Brücke gemäß den Regeln überquert hat über.
- Sie können davon ausgehen, dass:
- B ist höher als T .
- X niedriger als B .
- T ist mindestens 2 .
- Der Zug überquert schließlich die Brücke.
- Es gelten alle unsere Standardregeln.
- Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Testfälle
Eingang ([B, T, X]) -> Ausgang [41, 10, 10] -> 46 [40, 10, 10] -> 46 [30, 4, 16] -> 24 [50, 6, 11] -> 50
Ein weiteres Beispiel für den letzten Testfall:
Die Brücke hat die Länge 50, der Zug 6 und die Startposition ist 11. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Einzigartige Kacheln: [0, 1, 2]. Summe: 3. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Einzigartige Kacheln: [1, 2, 3, 4]. Summe: 10. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Einzigartige Kacheln: [1, 7, 8, 9]. Summe: 25. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Einzigartige Kacheln: [9, 3]. Summe: 12. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Zug existiert die Brücke. Gesamtsumme: 3 + 10 + 25 + 12 = 50.
(200, 2, 169)
, wird der Zug auf dem stecken00
in…9899100101102…
.Antworten:
Schale , 20 Bytes
Probieren Sie es online aus!
Nimmt drei Argumente , um T , B , X .
Erläuterung
quelle
Python 2 ,
1101051041031009796 Bytes[~-x:x+~-t]
zu[~-x:][:t]
....range(1,-~b)))[:b]
zu...range(b)))[1:-~b]
.[1:-~b][~-x:]
zu[:-~b][x:]
.[:-~b][x:]
zu[x:-~b]
.while
Schleife zu einerexec
Aussage.Probieren Sie es online aus!
quelle
[~-x:x+~-t]
kann ersetzt werden durch[x-1:][:t]
exec"x+=sum(set(map(int,''.join(map(str,range(b)))[x:-~b][:t])));"*b
arbeitet für 96. (Der Zug wird nie mehr alsb
Schritte unternehmen, um die Brücke zu verlassen, und dieser gesamte Vorgang wird sich immer wieder belaufen,x+=0
sobald er verlassen ist.)Haskell,
106102 BytesProbieren Sie es online aus!
quelle
R , 123 Bytes
Implementiert nur den beschriebenen Algorithmus.
R ist ziemlich schrecklich in Saiten.
Probieren Sie es online aus!
quelle
Gelee ,
2221 BytesEin vollständiges Programm mit drei Argumenten - die Reihenfolge ist B , X , T -, das das Ergebnis druckt.
Probieren Sie es online aus!
Wie?
quelle
JavaScript (ES6), 117 Byte
Ein Paar rekursiver Funktionen:
f()
summiert die Bewegungen des Zuges.g()
erstellt die Zeichenfolge.Weniger Golf:
Code-Snippet anzeigen
quelle
PHP> = 7,1, 153 Bytes
Probieren Sie es online aus!
Um es mit niedrigeren Versionen von PHP kompatibel zu machen, ändern Sie
[,$p,$q,$r]=
zulist(,$p,$q,$r)=
(+4 Bytes).quelle