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.