¡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.


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

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!


¿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'_/ \_'

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!


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.


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.


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


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!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.