Jimmy braucht ein neues Paar Schuhe!


12

Jimmy war letzte Woche mit all diesen Plattformen und Seilen beschäftigt , und der arme Jimmy hat nicht einmal Beine oder Füße, auf denen er stehen kann!


Ihre Aufgabe ist es, eine Schnur mit mehreren Jimmys zu nehmen und ihnen Beine und Schuhe zu geben!

Erhalten Sie Eingaben in Form eines Jimmy-Strings

Jimmy String => /o\ /o\ /o\

enthält nur /o\und

Geben Sie jedem Jimmy in der Eingabe ein Paar Füße, die so aussehen:

 /o\
_/ \_

Verwandeln Sie die eingegebene Jimmy-Saite mit schwebendem Kopf wie folgt in Jimmy mit Fußsaite:

// Input

       /o\   /o\          /o\

// Output

       /o\   /o\          /o\
      _/ \_ _/ \_        _/ \_

Wenn 2 Jimmys nahe beieinander liegen, müssen sie sich bewegen, um Platz zu schaffen. Jimmys bewegt sich immer nach rechts, um Platz für andere Jimmys zu schaffen.

// Input

/o\/o\

// Output

 /o\  /o\
_/ \__/ \_

Andere Jimmys, die weiter entfernt sind, dürfen nur bewegt werden, wenn dies erforderlich ist

// Input

/o\/o\      /o\

// Output

 /o\  /o\   /o\
_/ \__/ \_ _/ \_

// Input

/o\/o\    /o\

// Output

 /o\  /o\  /o\
_/ \__/ \__/ \_

Es gelten Standardregeln und Lücken,

Dies ist Code-Golf, also kann die kürzeste Antwort gewinnen.


Vorgeschlagener Testfall: /o\<sp>/o\<sp><sp><sp><sp><sp><sp><sp><sp>/o\/o\Meine aktuelle Implementierung schlägt fehl, da die letzten beiden Jimmies nach links statt nach rechts verschoben werden. Alle Ihre Testfälle sind jedoch erfolgreich.
Kevin Cruijssen

Antworten:



3

Ruby -p , 77 75 Bytes

Die Regel "Jimmy nicht bewegen, wenn sie nicht gebraucht wird" war eine ziemliche Tortur, aber ich denke, sie hat ganz gut geklappt. Zumindest um einiges kürzer als Python (zum Zeitpunkt des Schreibens).

-2 Bytes von rekursiv.

r=/(\\ ?|^)(\S+) ?/
gsub(r){"#$1 #$2"}while~r
puts$_
gsub(/ .o. ?/,'_/ \_')

Probieren Sie es online aus!


Könnten Sie \S+anstelle von verwenden \/\S*?
rekursiv

3

PowerShell , 96 Byte

($o=$args-split'/o.'|%{' '*($w=($l+=$_.Length-1)*($l-gt0));$l-=$w+1})-join' /o\ '
$o-join'_/ \_'

Probieren Sie es online aus!

Abgerollt:

$o=$args-split'/o.'|%{
    $len += $_.Length-1
    $width = $len*($len-gt0)    # len or 0, if len < 0
    ' '*$width
    $len -= $width+1
}
# $o is array of space strings now
$o-join' /o\ '
$o-join'_/ \_'


2

Holzkohle , 28 Bytes

 F⌕Aθ/«J∧ι⊖ι¹WKK→P_/ \_M↗/o\

Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:

 

Drucken Sie ein Leerzeichen, um den automatischen linken Rand von Charcoal zu umgehen.

F⌕Aθ/«

Schlaufe über alle linken Arme.

J∧ι⊖ι¹

Springe zum gewünschten linken Fuß. Beachten Sie, dass Holzkohle kein Problem beim Zeichnen hat (-1, 1), aber die Frage lässt dies nicht zu. Daher müssen wir darauf achten, das Zeichnen an negativen Positionen zu vermeiden.

WKK→

Gehen Sie an einer vorhandenen Ausgabe vorbei.

P_/ \_M↗/o\

Geben Sie die Füße aus und bewegen Sie sich dann, um den Jimmy auszugeben.


2

Netzhaut ,40 37 Bytes

\+`(^|\S.)(/\S*) ?
$1 $2
 /o. ?
_/ \_

Probieren Sie es online aus!

Vielen Dank an Value Ink für das Golfen von 3 Bytes.


4
Viel Spaß mit deinen neuen Schuhen!
Quinn

1
Nun, versucht vorzutäuschen, dass diese Herausforderungen für eine Weile nicht existieren. (Keine Beziehung zu diesem Jimmy.)
Jimmy23013

Ich glaube, die Musterübereinstimmung, die ich in meiner Ruby-Antwort verwendet habe, (\\ ?|^)(/\S*) ?ist kürzer als die in Ihrer ersten Zeile und sollte die gleichen Ergebnisse liefern (wahrscheinlich; ich kenne Retina überhaupt nicht)
Value Ink


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.