Jimmy'nin yeni bir ayakkabıya ihtiyacı var!


13

Jimmy geçen hafta tüm bu platformlar ve iplerle meşgul oldu ve zavallı Jimmy'nin ayakta duracak bacakları veya ayakları bile yok!


İşiniz birden fazla Jimmys içeren bir ip almak ve onlara bacaklar ve ayakkabılar vermek!

Jimmy String şeklinde giriş alın

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

sadece içeren /o\ve

girişteki her Jimmy'ye aşağıdaki gibi bir çift ayak verin:

 /o\
_/ \_

Girilen yüzen kafa Jimmy dizesini ayak dizesiyle Jimmy'ye çevirin, şöyle:

// Input

       /o\   /o\          /o\

// Output

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

2 Jimmys birbirine yakınsa, yer açmak için hareket etmeleri gerekir, Jimmys diğer Jimmys'e yer açmak için her zaman sağa doğru hareket eder.

// Input

/o\/o\

// Output

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

Daha uzakta olan diğer Jimmy'ler gerekmedikçe hareket ettirilmemelidir

// Input

/o\/o\      /o\

// Output

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

// Input

/o\/o\    /o\

// Output

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

Standart kurallar ve boşluklar geçerlidir,

Bu kod golf, bu yüzden en kısa cevap kazanabilir.


Önerilen test /o\<sp>/o\<sp><sp><sp><sp><sp><sp><sp><sp>/o\/o\senaryosu: Son uyguladığım Jimmies'i sağ yerine sola doğru hareket ettirdiği için şu anki uygulamam başarısız oluyor.
Kevin Cruijssen

Yanıtlar:



3

Yakut -p , 77 75 bayt

"Gerekirse Jimmy hareket etmeyin" kuralı, çalışmak için oldukça çetin bir şeydi ama bence oldukça iyi çalıştı. En azından Python'dan biraz daha kısa (yazma sırasında).

Özyinelemeden -2 bayt.

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

Çevrimiçi deneyin!


Bunun \S+yerine kullanabilir misiniz \/\S*?
özyinelemeli

3

PowerShell , 96 bayt

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

Çevrimiçi deneyin!

unrolled:

$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

Piton 2 , 152 148 140 bayt

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

Çevrimiçi deneyin!


2

Odun kömürü , 28 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Açıklama:

 

Kömürün otomatik sol kenar boşluğunu yenmek için bir alan yazdırın.

F⌕Aθ/«

Tüm sol kolların üzerinden geçin.

J∧ι⊖ι¹

İstediğiniz sol ayak konumuna atlayın. Kömürün çizimde sorun olmadığını (-1, 1), ancak sorunun buna izin vermediğini unutmayın, bu nedenle negatif pozisyonlarda çizim yapmaktan kaçınmaya dikkat etmeliyiz.

WKK→

Mevcut çıktıların ötesine geçin.

P_/ \_M↗/o\

Ayakları çıkartın ve Jimmy'ye çıkmak için hareket edin.


2

Retina ,40 37 bayt

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

Çevrimiçi deneyin!

3 bayt golf için Value Ink sayesinde.


4
Yeni ayakkabılarınızın tadını çıkarın!
Quinn

1
Bu zorlukları bir süre yokmuş gibi yapmaya çalıştım. (Jimmy ile ilişkisi yok.)
jimmy23013

Ruby cevabımda kullandığım desen eşleşmesinin (\\ ?|^)(/\S*) ?ilk satırdakinden daha kısa olduğuna ve aynı sonuçları vereceğine inanıyorum (muhtemelen; Retina'yı hiç bilmiyorum)
Value Ink


1

JavaScript (ES6), 107 bayt

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

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.