¡Jimmy necesita un nuevo par de zapatos!

13

Jimmy ha estado ocupado la semana pasada con todas estas plataformas y cuerdas , ¡y el pobre Jimmy ni siquiera tiene piernas o pies para pararse!


¡Tu trabajo es tomar una cuerda que contenga múltiples Jimmys y darles piernas y zapatos!

Obtenga información en forma de una cuerda Jimmy

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

que contiene solo /o\y

dale a cada Jimmy en la entrada un par de pies que se ve así:

 /o\
_/ \_

Convierta la cuerda Jimmy de cabeza flotante introducida en Jimmy con una cuerda de pies, así:

// Input

       /o\   /o\          /o\

// Output

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

Si 2 Jimmys están juntos, deben moverse para hacer espacio, Jimmys siempre se moverá hacia la derecha para dejar espacio para otros Jimmys.

// Input

/o\/o\

// Output

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

Otros Jimmys que están más lejos no se deben mover a menos que sea necesario

// Input

/o\/o\      /o\

// Output

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

// Input

/o\/o\    /o\

// Output

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

Se aplican reglas estándar y lagunas,

Este es el código de golf, por lo que puede ganar la respuesta más corta.

Quinn
fuente
Caso de prueba sugerido: /o\<sp>/o\<sp><sp><sp><sp><sp><sp><sp><sp>/o\/o\mi implementación actual falla porque mueve los dos últimos Jimmies hacia la izquierda en lugar de hacia la derecha. Sin embargo, todos sus casos de prueba tienen éxito.
Kevin Cruijssen

Respuestas:

3

Python 2 , 131 120 115 114 121 118 bytes

o=1;W=[]
for g in map(len,input().split('/o\\')):W+=[' '*(g-o)];o=max(o-g,0)+2
for q in' /o\ ','_/ \_':print q.join(W)

Pruébalo en línea!

4 bytes thx a movatica ; 10 bytes perdidos por la corrección de errores.

Chas Brown
fuente
1
o+=2-len(g)le ahorra un byte
movatica
118 bytes
movatica
1
@movatica: hubo un error, pero fue corregido por tus ediciones :).
Chas Brown
3

Ruby -p , 77 75 bytes

La regla de "no mover a Jimmy si no es necesario" fue una experiencia difícil de resolver, pero creo que funcionó bastante bien. Más corto que Python bastante (al momento de escribir), al menos.

-2 bytes de recursivo.

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

Pruébalo en línea!

Tinta de valor
fuente
¿Podría usar \S+en lugar de \/\S*?
recursivo
3

PowerShell , 96 bytes

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

Pruébalo en línea!

Desenrollado:

$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'_/ \_'
mazzy
fuente
2

Python 2 , 152 148 140 bytes

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:]))

Pruébalo en línea!

TFeld
fuente
2

Carbón , 28 bytes

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

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:

 

Imprima un espacio para vencer el margen izquierdo automático de Carbón.

F⌕Aθ/«

Pase sobre todos los brazos izquierdos.

J∧ι⊖ι¹

Salte a la ubicación deseada del pie izquierdo. Tenga en cuenta que el carbón no tiene problemas para dibujar (-1, 1), pero la pregunta no lo permite, por lo que debemos tener cuidado de evitar dibujar en posiciones negativas.

WKK→

Pasar cualquier salida existente.

P_/ \_M↗/o\

Emitir los pies y luego mover para emitir el Jimmy.

Neil
fuente
2

retina ,40 37 bytes

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

Pruébalo en línea!

Gracias a Value Ink por jugar golf en 3 bytes.

jimmy23013
fuente
44
¡Disfruta tus zapatos nuevos!
Quinn
1
Bueno, traté de fingir que estos desafíos no existen por un tiempo. (Sin relación con ese Jimmy.)
jimmy23013
Creo que la coincidencia de patrón que utilicé en mi respuesta de Ruby (\\ ?|^)(/\S*) ?es más corta que la de su primera línea y debería dar los mismos resultados (probablemente; no conozco Retina en absoluto)
Value Ink
2

Stax , 29 28 24 25 bytes

¢▄▌ß╙EVäN»0►,δñï◙,Θ╙BÅhΓ?

Ejecutar y depurarlo

Hubo un error en la solución de 24 bytes que causó algunos errores off-by-1 en algunos casos.

recursivo
fuente
1

JavaScript (ES6), 107 bytes

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))

Pruébalo en línea!

Arnauld
fuente