ジミーはあなたの助けを必要としています!


17

最近のように、そこに見られるように、Jimmysが彼らの死に落ちる多くなっているようだここではこことジミーが落ちるかどうかを判断するように求めていたところ。この狂気をやめ、ジミーを救おうとする時です。

ジミーは3体の部分を持っている/o\このように配置されました

/o\

プラットフォームはで表され-ます。ジミーは、プラットフォームの真上にない2つ以上の身体部分がある場合、プラットフォームから落下します。

いくつかの例:

   /o\
- -------

ジミーは体のすべての部分が体温以上であるため、バランスを取るでしょう-

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

2つの体の部分が-s を超えているため、ジミーはバランスを取ります。

 /o\
-- ----  --

ジミーは2つのプラットフォームに分割されていてもバランスを取ります

  /o\
   -

2つの身体部分がプラットフォームの上にないため、ジミーはバランスが取れません。


プラットフォームの供給が不足しているため、プラットフォームの長さは5しかなく、できるだけ少ない数を使用することが重要です。

あなたの仕事は、Jimmysの入力を取得し、すべてのJimmysを入力に保存する一連のプラットフォームを出力することです。出力はできるだけ少ないプラットフォームを使用する必要がありますが、各プラットフォーム-の幅は5でなければなりません。

プラットフォームの-幅が5であるという規則は、各プラットフォームの間にスペースが必要であることを意味することに注意してください。----------は、長さ5の2つのプラットフォームではなく、長さ10のプラットフォームと見なされるため、出力では無効です。

テストケース

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

標準ルールが適用されます。

これはコードゴルフです、最短の答えが勝つかもしれません!


2
@Veskahすべてのジミーが可能な限り少ないプラットフォームを使用して保存されている限り、位置は重要ではないため、各入力に複数の有効な出力があります。入力に含まれるジミーの数に条件はありません。空の文字列は有効な入力になります。
クイン

3
テストケース4は恐ろしい顔のように見えます
Expired Data

2
フォローアップ:できるだけ多くのジミーをプラットフォームに配置して、落ちないようにします。
valは

2
実際にはリンクされた質問の1つである@val-私はその質問の後にフォローアップしました:P
Quinn

7
私は将来、非常に多くのジミーのフォローアップを見ることができます。
connectyourcharger

回答:


2

17 15バイト

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

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:

W‹ⅈLθ«

カーソル位置が入力の長さより短い間繰り返します。

×⁵№o\§θⅈ

入力のその位置にある文字がまたはのo場合、\5 -秒印刷します。

次の文字に移動して、プラットフォーム間に少なくとも1つのスペースを確保します。

以前の17バイトのソリューションは、IMHOより「チャコールy」です。

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

オンラインでお試しください!リンクは、コードの詳細バージョンです。出力には入力が含まれているため、ソリューションの正確さを示しています。説明:

θ⸿

入力を印刷し、次の行の先頭に移動します。

Fθ«

入力のすべての文字をループして、ジミーが見逃されないようにします。

×⁵¬№ /⊟KD²↑

カーソルの上の文字を見てください。ない場合、またはスペースまたは/である場合は何もせず、そうでない場合は5 -秒を出力します。

次の文字に移動して、プラットフォーム間に少なくとも1つのスペースを確保します。


7

Pythonの270の 67バイト

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

オンラインでお試しください!

Kevin CruijssenとNeilのおかげで-3バイト

きれいではない、残ったスラッシュをうまく処理する方法がわからない...

残念ながら、1つのre.sub呼び出しを使用して各プラットフォームの両端をスペースに置き換えることはできません。2つのプラットフォームが1スペース離れている場合、それらの間のギャップを複数回一致させることができないためです。先読み/後読みアサーションは役に立ちません。これらのアサーション内で一致したものは置き換えられないためです。

単一のre.sub参照を使用する:

Python 3.8(プレリリース)、78バイト

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

オンラインでお試しください!


69バイト最初置き換えることによって/、その後[^ ]
ケビンクルイッセン

Retinaの回答に対する@Neilの推奨ゴルフも有効です:67バイト
ケビンクルイッセン


2

Pythonの3158の 164 160バイト

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)

オンラインでお試しください!

これは私の最初のコードゴルフの答えであり、ジミーの質問に答えてうれしいです!

説明:

  • a=input();r="":入力を受け取り、新しい文字列を初期化しますr

  • for i,c in enumerate(a)::入力を列挙します。

  • try:r[i] ... except:r[i]存在するかどうかを確認します-存在しない場合は、exceptブロックを処理します。

  • if c in"/o"::現在のキャラクターがジミーの最初の2つの身体部分にあるかどうかを確認します。

  • r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- ":その場合、新しいセグメントを追加します。別のジミーの頭が5文字で存在する場合、新しいセグメントの前にスペースを追加します。

  • else:r+=" ":それ以外の場合は、スペースを追加します。

  • print(r):最終結果を印刷します。


かなり近いですが、これは実際にはすべてのテストケースで機能するとは限りません。できるだけ少ないプラットフォームを使用する必要があり、最後の例では1で実行できる場合は2を使用する必要があります
Quinn

@Quinn Shoot。エラー、それを修正するまで非競合。
connectyourcharger

@connectyourcharger "競合しない"は、無効なソリューションを検証しません。しばらくの間(たとえば、数分)修正しない場合は、削除することをお勧めします。
エリック・ザ・アウトゴルファー

@Quinn今修正しました。
connectyourcharger

@connectyourchargerいいね!
クイン

2

網膜23 21バイト

/

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

@Neilのおかげで-2バイト。

2行目、4行目、および6行目に1つの末尾スペースが含まれます。

@negativeSevenのPython 2回答のポートです。必ず彼に賛成してください!

オンラインでお試しください。

説明:

すべて"/"をaに置き換えます" "

/
 

末尾に5つのスペースを追加します。

$
5* 

スペースで始まらないサイズ6のすべての部分文字列を次のように置き換えます"----- "

\S.{5}
5*- 

\S代わりに使用できます[^ ]か?
ニール

@Neil Ah、もちろん。ありがとう!
ケビンクルイッセン


1

05AB1E25 24 バイト

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

@negativeSevenのPython 2回答のポートです。必ず彼に賛成してください!

オンラインそれを試してみたり、すべてのテストケースを確認してください

説明:

ð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 "---- "

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.