Jimmy butuh sepasang sepatu baru!


13

Jimmy telah memiliki sibuk minggu lalu dengan semua ini platform dan tali , dan miskin jimmy bahkan tidak memiliki kaki atau kaki untuk berdiri di atas!


Tugas Anda adalah mengambil seutas tali berisi beberapa Jimmy dan memberi mereka sepatu dan kaki!

Dapatkan input dalam bentuk String Jimmy

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

hanya mengandung /o\dan

beri masing-masing Jimmy di input sepasang kaki yang terlihat seperti ini:

 /o\
_/ \_

Ubah string mengambang kepala Jimmy yang dimasukkan menjadi Jimmy dengan tali kaki, seperti:

// Input

       /o\   /o\          /o\

// Output

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

Jika 2 Jimmys berdekatan, mereka harus pindah untuk memberi ruang, Jimmys akan selalu bergerak ke kanan untuk memberi ruang bagi Jimmys lain.

// Input

/o\/o\

// Output

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

Jimmys lain yang jauh tidak boleh dipindahkan kecuali jika diperlukan

// Input

/o\/o\      /o\

// Output

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

// Input

/o\/o\    /o\

// Output

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

Aturan dan celah standar berlaku,

Ini kode-golf, jadi mungkin jawaban terpendek menang.


Test case yang disarankan:, /o\<sp>/o\<sp><sp><sp><sp><sp><sp><sp><sp>/o\/o\implementasi saya saat ini gagal karena memindahkan dua Jimmies terakhir ke kiri bukannya kanan .. Namun, semua test case Anda berhasil.
Kevin Cruijssen

Jawaban:



3

Ruby -p , 77 75 byte

Aturan "jangan pindahkan Jimmy jika tidak diperlukan" adalah cobaan berat untuk diselesaikan, tetapi saya pikir itu berhasil dengan baik. Lebih pendek dari Python sedikit (pada saat penulisan), setidaknya.

-2 byte dari rekursif.

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

Cobalah online!


Bisakah Anda menggunakan \S+di tempat \/\S*?
rekursif

3

PowerShell , 96 byte

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

Cobalah online!

Belum dibuka:

$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 byte

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

Cobalah online!


2

Arang , 28 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

 

Cetak spasi untuk mengalahkan margin kiri otomatis Charcoal.

F⌕Aθ/«

Lingkarkan semua lengan kiri.

J∧ι⊖ι¹

Lompat ke lokasi kaki kiri yang diinginkan. Perhatikan bahwa Arang tidak memiliki masalah menggambar (-1, 1), tetapi pertanyaannya tidak memungkinkan, jadi kita harus berhati-hati untuk menghindari menggambar di posisi negatif.

WKK→

Bergerak melewati semua output yang ada.

P_/ \_M↗/o\

Keluarkan kaki dan kemudian pindah untuk menampilkan Jimmy.


2

Retina ,40 37 byte

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

Cobalah online!

Berkat Value Ink untuk bermain golf 3 byte.


4
Nikmati sepatu baru Anda!
Quinn

1
Yah, mencoba berpura-pura tantangan ini tidak ada untuk sementara waktu. (Tidak ada hubungannya dengan Jimmy itu.)
jimmy23013

Saya percaya pencocokan pola yang saya gunakan dalam jawaban Ruby saya (\\ ?|^)(/\S*) ?lebih pendek daripada yang ada di baris pertama Anda dan harus memberikan hasil yang sama (mungkin; Saya tidak tahu sama sekali Retina)
Nilai Tinta


1

JavaScript (ES6), 107 byte

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

Cobalah online!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.