Jimmy'nin yardımına ihtiyacı var!


17

Son itibariyle orada görülebileceği gibi, bir Jimmys onların ölüme düşen çok olmuştur görünüyor burada , burada ve Jimmy düşeceği olmadığını belirlemenize istendi nerede. Bu çılgınlığa bir son vermenin ve Jimmy'yi kurtarmaya çalışmanın zamanı geldi.

Jimmy üç gövde parçaları vardır /, ove \bu şekilde düzenlenmiş

/o\

Platformlar ile temsil edilir -. Jimmy, doğrudan bir platformun üzerinde olmayan iki veya daha fazla vücut parçasına sahipse platformlarından düşecektir.

Bazı örnekler:

   /o\
- -------

Tüm vücut parçaları a -.

   /o\
    ------   ---

İki vücut parçası -s'nin üzerinde olduğu için Jimmy dengelenir .

 /o\
-- ----  --

Jimmy iki platform arasında bölünmüş olsalar bile dengeleyecek

  /o\
   -

İki vücut parçası bir platformun üstünde olmadığı için Jimmy dengelenmeyecek.


Platform kaynağım azaldığı için yalnızca 5 uzunluğa sahip platformlarım var ve mümkün olduğunca az kullanmamız önemlidir.

Göreviniz Jimmys'in bir girdisini almak ve tüm Jimmys'i girdiye kaydedecek bir dizi platform çıkarmaktır. Çıktınız mümkün olduğunca az platform kullanmalı, ancak her platform 5 -genişliğinde olmalıdır.

Platformun kuralının 5 -genişliğinde olduğuna dikkat edin, her platformun aralarında bir boşluk olması gerektiği anlamına gelir. ----------çıkışta geçerli değildir, çünkü 10 uzunluklu bir platform olarak kabul edilir ve 5 uzunluklu iki platform olarak kabul edilmez.

Test Durumları

/o\  /o\/o\    // input
----- -----    // output
/o\           /o\
-----       -----
/o\           /o\      // same input as above
-----          -----   // this is also valid output
    /o\ /o\
     -----

Standart kurallar geçerlidir.

Bu kod golf, en kısa cevap kazanabilir!


2
@Veskah, tüm Jimmys mümkün olan en az platform kullanılarak kaydedildiği sürece konum önemli değildir, bu nedenle her giriş için birden fazla geçerli çıkış olacaktır. Girişte kaç Jimmys bulunacağına dair bir koşul yoktur, boş bir dize geçerli bir giriş olur.
Quinn

3
Test durumu 4 korkunç bir yüz gibi görünüyor
Süresi Dolmuş Veri

2
Takip: platformlara düşmeyecek şekilde mümkün olduğunca çok Jimmys yerleştirin.
val diyor Reinstate Monica

2
@val aslında bağlantılı sorulardan biri - Ondan sonra takip ettim: P
Quinn

7
Gelecekte çok fazla Jimmy takibi görebiliyorum.
connectyourcharger

Yanıtlar:


2

Kömür , 17 15 bayt

W‹ⅈLθ«×⁵№o\§θⅈ→

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

W‹ⅈLθ«

İmleç konumu girişin uzunluğundan azken tekrarlayın.

×⁵№o\§θⅈ

Girişteki bu konumdaki karakter bir oveya bir ise, \5 -saniye yazdırın .

Bir sonraki karaktere geçin, böylece platformlar arasında en az bir boşluk garanti edin.

Önceki 17 baytlık çözüm IMHO daha "Charcoal-y" dir.

θ⸿Fθ«×⁵¬№ /⊟KD²↑→

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Çıktı girdiyi içerir, böylece çözümün doğruluğunu gösterir. Açıklama:

θ⸿

Girişi yazdırın ve sonraki satırın başına gidin.

Fθ«

Jimmy'nin kaçırılmadığından emin olmak için girişin her karakterini çevirin.

×⁵¬№ /⊟KD²↑

İmlecin üzerindeki karaktere bakın. Hiçbiri yoksa veya boşluksa veya /hiçbir şey yapmazsanız, aksi takdirde 5 -sn yazdırın .

Bir sonraki karaktere geçin, böylece platformlar arasında en az bir boşluk garanti edin.


7

Python 2 , 70 67 bayt

lambda s:S('/',' ',S("\S.{5}","----- ",s+' '*5))
import re;S=re.sub

Çevrimiçi deneyin!

Kevin Cruijssen & Neil sayesinde -3 bayt

En güzel değil, artık kalan eğik çizgileri daha iyi nasıl idare edeceğinden emin değilim ...

Ne yazık ki, her platformun her iki ucunu tek bir re.subçağrı kullanarak boşluklarla değiştiremeyiz , çünkü 2 platformun bir boşluk olması durumunda, aralarındaki boşluk bir kereden fazla eşleştirilemez. Bir ileri / ileri görüş beyanı yardımcı olmaz, çünkü bu iddialarda eşleşen hiçbir şey değiştirilmez.

Tek bir re.subbaşvuru kullanma :

Python 3.8 (ön sürüm) , 78 bayt

lambda s:[s:=re.sub(".[^/ -].{5}"," ----- ",s+"  ",1)for c in s][-1]
import re

Çevrimiçi deneyin!


69 bayt ilk değiştirerek /ve daha sonra [^ ].
Kevin Cruijssen

@ Neil'in Retina cevabımda önerdiği golf de sizin için çalışıyor: 67 bayt .
Kevin Cruijssen


2

Piton 3 , 158 164 160 bayt

a=input();r=""
for i,c in enumerate(a):
 try:r[i]
 except:
  if c in"/o":
   r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
  else:r+=" "
print(r)

Çevrimiçi deneyin!

Bu benim ilk kod golf cevabım ve Jimmy sorusunda mutluyum!

Açıklama:

  • a=input();r="": Girdiyi alın ve yeni bir dize başlatın r.

  • for i,c in enumerate(a):: Giriş üzerinde numaralandırın.

  • try:r[i] ... except:: Varsa bakın r[i]- eğer değilse, exceptbloğu işleyin.

  • if c in"/o":: Mevcut karakterin Jimmy'nin ilk iki vücut bölümünde olup olmadığını kontrol edin.

  • r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- ": Öyleyse, yeni bir segment ekleyin. Beş karakterde başka bir Jimmy kafası varsa, yeni segmentimizden önce bir boşluk ekleyin.

  • else:r+=" ": Aksi takdirde, bir boşluk ekleyin.

  • print(r): Nihai sonucumuzu yazdırın.


Oldukça yakın, ama bence bu aslında tüm test senaryoları için geçerli değil. Mümkün olduğunca az platform kullanmalı ve son örneğiniz 1 ile gerçekleştirilebildiğinde 2 kullanır
Quinn

@Quinn Shoot. Hata, düzeltene kadar rakipsiz.
connectyourcharger

@connectyourcharger "rakip olmayan" geçersiz bir çözümü doğrulamıyor. Bir süre düzeltmeyecekseniz silmenizi öneririm (örn. Önümüzdeki birkaç dakika).
Outgolfer Erik

@Quinn Şimdi düzelttim.
connectyourcharger

@connectyourcharger Güzel!
Quinn

2

Retina , 23 21 bayt

/

$
5* 
\S.{5}
5*- 

@Neil sayesinde -2 bayt .

İkinci, dördüncü ve altıncı satırlarda tek bir boşluk bırakır.

Port of @negativeSeven 's Python 2 yanıtı , bu yüzden onu oyladığınızdan emin olun!

Çevrimiçi deneyin.

Açıklama:

Tümünü bir "/"ile değiştir " ":

/
 

5 arka boşluk ekleyin:

$
5* 

Boşluk ile başlamayan altı boyutlu tüm alt dizeleri şu şekilde değiştirin "----- ":

\S.{5}
5*- 

\SBunun yerine kullanabilir misin [^ ]?
Neil

@Neil Ah, elbette. Teşekkürler!
Kevin Cruijssen


1

05AB1E , 25 24 bayt

ð5׫'/ð:DŒ6ùʒнðÊ}'-5×ð«:

Port of @negativeSeven 's Python 2 yanıtı , bu yüzden onu oyladığınızdan emin olun!

Çevrimiçi deneyin veya tüm test senaryolarını doğrulayın .

Açıklama:

ð5׫                      # Append 5 trailing spaces to the (implicit) input-string
    '/ð:                 '# Replace all "/" with a space
        D                 # Duplicate the string
         Œ                # Get all substrings of this
          6ù              # Only leave those of length 6
            ʒ   }         # Filter it further by:
             нðÊ          #  Only keep those which do NOT start with a space
                 '-5×ð«  '# Push a string of 5 "-" appended with a space: "----- "
                       :  # Replace in the initially duplicated string all substrings 
                          # remaining in the list with this "---- "

1

Japt , 23 22 bayt

Arnauld'un JS çözümünün tam olarak test edilemeyecek kadar tükenmiş olduğum bir limanı. Geçersiz ise bir Diamond lütfen silebilir mi?

+L² £=U´?U:X>M©5)?'-:S

Dene

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.