Jimmy a besoin d'une nouvelle paire de chaussures!


13

Jimmy a eu une semaine chargée avec toutes ces plates - formes et cordes , et le pauvre Jimmy n'a même pas de jambes ou de pieds pour se tenir debout!


Votre travail consiste à prendre une chaîne contenant plusieurs Jimmys et à leur donner des jambes et des chaussures!

Obtenez une entrée sous la forme d'une chaîne Jimmy

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

contenant uniquement /o\et

donnez à chaque Jimmy en entrée une paire de pieds qui ressemble à ceci:

 /o\
_/ \_

Transformez la chaîne Jimmy à tête flottante entrée en chaîne Jimmy avec pieds, comme ceci:

// Input

       /o\   /o\          /o\

// Output

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

Si 2 Jimmys sont proches l'un de l'autre, ils doivent se déplacer pour faire de la place, Jimmys se déplacera toujours vers la droite pour faire de la place pour d'autres Jimmys.

// Input

/o\/o\

// Output

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

Les autres Jimmys éloignés ne doivent pas être déplacés sauf si nécessaire

// Input

/o\/o\      /o\

// Output

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

// Input

/o\/o\    /o\

// Output

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

Des règles et des lacunes standard s'appliquent,

C'est le golf de code, alors la réponse la plus courte peut gagner.


Cas de test suggéré: /o\<sp>/o\<sp><sp><sp><sp><sp><sp><sp><sp>/o\/o\mon implémentation actuelle échoue car elle déplace les deux derniers Jimmies vers la gauche au lieu de la droite. Tous vos cas de test réussissent cependant.
Kevin Cruijssen

Réponses:



3

Rubis -p , 77 75 octets

La règle "ne déplacez pas Jimmy si vous n'en avez pas besoin" a été assez difficile à contourner, mais je pense que cela a très bien fonctionné. Plus court que Python de beaucoup (au moment de la rédaction), au moins.

-2 octets de récursif.

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

Essayez-le en ligne!


Pourriez-vous utiliser \S+à la place de \/\S*?
récursif

3

PowerShell , 96 octets

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

Essayez-le en ligne!

Déroulé:

$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

Python 2 , 152 148 140 octets

o=[-4]
for i,c in enumerate(input()):o+=[max(i,o[-1]+5)]*('/'==c)
for s in' /o\ ','_/ \_':print''.join('%*s'%(b-a,s)for a,b in zip(o,o[1:]))

Essayez-le en ligne!


2

Fusain , 28 octets

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

Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:

 

Imprimez un espace pour vaincre la marge gauche automatique de Charcoal.

F⌕Aθ/«

Faites une boucle sur tous les bras gauches.

J∧ι⊖ι¹

Sautez à l'emplacement du pied gauche souhaité. Notez que le charbon de bois n'a aucun problème à dessiner (-1, 1), mais la question ne le permet pas, nous devons donc faire attention à ne pas dessiner à des positions négatives.

WKK→

Déplacez-vous au-delà de toute sortie existante.

P_/ \_M↗/o\

Sortez les pieds puis déplacez-vous pour sortir le Jimmy.


2

Retina ,40 37 octets

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

Essayez-le en ligne!

Merci à Value Ink d'avoir joué au golf sur 3 octets.


4
Profitez de vos nouvelles chaussures!
Quinn

1
Eh bien, j'ai essayé de faire comme si ces défis n'existaient pas depuis un moment. (Aucune relation avec ce Jimmy.)
jimmy23013

Je crois que la correspondance de motifs que j'ai utilisée dans ma réponse Ruby (\\ ?|^)(/\S*) ?est plus courte que celle de votre première ligne et devrait donner les mêmes résultats (probablement; je ne connais pas du tout la rétine)
Value Ink


1

JavaScript (ES6), 107 octets

s=>` /o\\ 
_/ \\_`.replace(/.*/g,j=>s.split(/.o./).map(s=>s.slice(n,l=s.length,n=n>l?n-l+2:2),n=1).join(j))

Essayez-le en ligne!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.