Verbindungslücken mit Tetris-Stücken


14

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:

Tetris-Steine

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.


Ahh, ich verstehe. Ich habe sie so angesehen, wie sie sind.
Tim

Antworten:


4

CJam, 53

'[,73>qf{1$e=s':+\+~}:+3*I+O-SZ-JO+m0e>ZS-LO+-e>2+3/-

Probieren Sie es online aus

Die Idee ist: Ordnen Sie jeder der Variablen I, J, ..., Z die Anzahl der Vorkommen dieses Buchstabens zu und berechnen Sie string length * 3 + I - O. Zählen Sie dann die Anzahl der nicht kompensierten Ss oder Zs: Ein S kann durch Z, J oder O kompensiert werden, und ein Z kann durch S, L oder O kompensiert werden und subtrahieren ceil(that number/3), da wir für jeweils 3 Ss oder 1 Einheit verlieren Z's.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.