Sie sollten ein Programm oder eine Funktion schreiben, die eine Liste von Tetris-Blöcken als Eingabe-Ausgabe enthält oder die größte Lücke zwischen zwei Punkten in derselben Höhe zurückgibt, die die Teile verbinden können.
Die 7 Arten von Tetris-Stücken sind die folgenden:
Wir werden auf diese Stücke durch die Buchstaben I, J, L, O, S, T und Z verweisen, die sich auf ihre Formen beziehen. Sie können die Teile drehen, aber nicht wie in einem Tetris-Spiel spiegeln.
Unsere Aufgabe ist es, aus den vorgegebenen Stücken einen orthogonal zusammenhängenden Bereich (Seiten verbunden mit Seiten) zu erstellen. Dieser Bereich sollte (auch orthogonal) zwei Einheitsquadrate auf gleicher Höhe verbinden. Wir sollten die größtmögliche Lücke zwischen den beiden Quadraten finden, die wir überbrücken können.
Ausführliche Beispiele
Mit dem Stück L können wir eine Lücke von 3 verbinden
L
XLLLX
Mit dem Stück S können wir eine Lücke von 2 verbinden
SS
XSSX
Mit den Teilen S, S, O können wir eine Lücke von 7 verbinden (Beachten Sie, dass wir keine Lücke von 8 verbinden können)
S
XSSOO SSX
SOOSS
Eingang
- Eine Zeichenfolge, die die verfügbaren Teile darstellt und nur die Großbuchstaben I, J, L, O, S, T und Z enthält. Jeder Buchstabe steht für ein vollständiges Tetris-Teil.
- Die Buchstaben werden in der Zeichenfolge in alphabetischer Reihenfolge angezeigt.
- Die Zeichenfolge muss mindestens ein Zeichen lang sein.
Ausgabe
- Eine einzelne positive ganze Zahl, die größte Lücke, die mit den angegebenen Stücken verbunden werden kann.
Beispiele
Eingabe => Ausgabe
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Dies ist Code-Golf, also gewinnt der kürzeste Einstieg.