プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

4
秩序とカオスとコードゴルフ
Order and Chaosは、6x6ボードでプレイされるTic-Tac-Toeのバリアントです。ただし、このゲームのユニークな点は、両方のプレイヤーがXまたはOを配置できることです。プレイヤーは(順番で始まる)ターンごとに、占有されていないマスにXまたはOを配置します。 勝つことは簡単です。ボード上に5つのXまたはO(垂直、水平、または斜め)が並んでいる場合、勝ちとなります。ボードがいっぱいで、ボードに5個のXまたはOのストリングがない場合、カオスが勝ちます。あなたの仕事?さて、これはプログラミングパズルとコードゴルフなので、ゲームをプログラミングしてゴルフします。 ルール として入力を受け入れる必要がありますx y t。xとyは座標であり、tはタイルタイプ(XまたはO)です。座標0 0は左上隅から始まり、5 5右下隅まで増加します。 ユーザーが無効な座標、タイル、の形式ではない入力を入力した場合、または既に存在する場所にタイルを配置しようとした場合は、q終了して印刷することを受け入れる必要があります。(唯一の例外は、これによりプログラムが終了するためです。)INVALIDx y tq 注文が勝った場合は、が出力されますP1 WINS。カオスが勝利した場合、出力されますP2 WINS。 最初に注文する必要があります。 空白スペースはで表され.ます。 タイルはXand O(大文字)です。小文字を受け入れる必要はありませんが、大文字は必須です。 ボードはのみで構成されている必要があります.XO。 あなたは実際にゲームをプレイする両方のプレイヤーをシミュレートしており、ボードは与えられず、誰が勝ったかを確認しています。1つのプレイヤーが勝つまで、入力として動きを受け入れ、次にボードを印刷し、別の動きを受け入れます。 スターティングボードは次のようになります。 ...... ...... ...... ...... ...... ...... そして、最初のプレイヤー(Order)が入力した後、次の1 2 Xようになります。 ...... ...... .X.... ...... ...... ...... 同様に、次のプレイヤー(カオス)がを入力すると、次の3 3 Oようになります。 ...... ...... .X.... ...O.. ...... ...... そして、これは一人のプレイヤーが勝つまで続きます。 いつものように、すべての面白さを取り除く標準の抜け穴は禁止されています。 勝者は、6月15日00:00 …

2
また何日ですか?
私のウェブサイトでは、ユーザーは生年月日をスタイルで入力しますxx.xx.xx-ドットで区切られた3つの2桁の数字。残念ながら、使用する形式をユーザーに正確に伝えるのを忘れていました。私が知っているのは、1つのセクションが月、1つが日付、1つが年に使用されることだけです。年は間違いなく20世紀(1900-1999)であるため、形式31.05.75はを意味し31 May 1975ます。また、誰もがグレゴリオ暦またはユリウス暦のどちらかを使用していると想定しています。 ここで、データベースを調べて混乱を解消したいと思います。最初に、日付が最も曖昧な、つまり可能な日付の範囲が最も広いユーザーに対処します。 たとえば、日付08.27.53は27 August 1953グレゴリオ暦またはユリウス暦のどちらかを意味します。ユリウス暦の日付は13日後なので、範囲はちょうど13 daysです。 対照的に、表記01.05.12は多くの可能な日付を参照できます。最古は12 May 1901 (Gregorian)、最新は1 May 1912 (Julian)です。範囲は4020 daysです。 ルール 入力はの形式の文字列で、xx.xx.xx各フィールドは2桁でゼロが埋め込まれます。 出力は範囲内の日数です。 入力は常に有効な日付であると想定できます。 組み込みの日付またはカレンダー関数を使用することはできません。 最短コード(バイト単位)が優先されます。 テストケース 01.00.31 => 12 29.00.02=> 0(唯一の可能性は29 February 1900 (Julian)) 04.30.00 => 13 06.12.15 => 3291
10 code-golf  date 

12
文字列内の文字の混合
stdin/ command-line arguments / function arguments を介して入力を取り、文字列内の文字を混合し、次にを介して最終的な文字列を出力する関数/プログラムを作成する必要がありますstdout。 入力には、最初に文字列(空またはでないnull)、スペース、次にスペースで区切られた偶数の非負数が含まれます。関数の引数を介して入力が行われる場合、文字列は引数の1つであり、スペースで区切られた整数はもう1つの引数です。連続する数値のペアに対応するインデックスで文字列の文字を交換する必要があります。 例えば: Hello_world! 0 6 結果として wello_Horld! 仮定 0ベースまたは1ベースのインデックスを選択でき、指定されたインデックスは常に範囲内であると想定できます。 文字列が100文字を超えることはないだろうとだけ範囲のASCII文字が含まれています!し~(包括的、0x7Eにする文字コード0x21で)。リファレンスについては、ASCII表を参照してください。 ペアの2つのインデックスは同一である可能性があります(その場合、そのステップでは何も交換されません)。 得点 これはコードゴルフなので、最短の提出(バイト単位)が勝ちます。 テストケース Hello_world! 0 6 => wello_Horld! First 1 2 1 0 0 4 => tFisr (Second!$$) 8 7 10 1 => ()econd$!$S ~Third~ 0 0 6 6 0 6 6 …
10 code-golf  string 

1
メタクインチェッカー
この課題は、受け入れる場合、3つの関数またはプログラムA、B、およびCを記述することです。 Aは、A、B、Cのすべてを出力するクインです(提出物のコードの内容全体でもあります)。 BはパラメータFを取り、それがそのようなクイン(FBCを出力する)であるかどうか、または別のことを行うかどうかをチェックします。 CはパラメーターGを取り、GがBのように機能するかどうかをチェックします(FがFGCを出力するかどうかをチェックします)。関数がクインチェッカーであるかどうかを判断することは不可能なので、もっと簡単なことをしましょう。 GがBに対して有効である場合は、trueを返す必要があります。 Gがすべての有効なクインに対してfalseを返す場合、またはGはすべての有効な非クインに対してtrueを返す場合、falseを返す必要があります。 それが他のいずれかのケースである場合、それは何かを返したり、クラッシュしたり、終了しない場合があります。 Bが可能であることに注意してください。AとFには入力がないため、実行して結果を確認するだけです。 ルール Aの出力から、どの部分がA、B、Cであるかを判別する方法がいくつかあるはずです。たとえば、各行が1行であるか、インタプリタで3つの関数として認識されます。 各関数は、完全なコードではなく、それ自体の定義のみで実行する必要があります。 関数/プログラムまたはそのソースコード、あるいは両方のペアをB(またはG)とCの入力として使用できます。 真偽をこれらの値のサブセットに再定義できます。単一の文字列のように、Fが選択した型を返すことを一貫して要求することもできます。 A、B、F、Gが有効なパラメーターで呼び出された場合、グローバル変数へのアクセスやstdinの読み取りなど、選択した他の入力や副作用のタイプが一貫して存在しない場合があります。 FとGが有効なパラメーターで呼び出された場合、常に終了することも想定できます。 FはAと同じ条件で動作する必要があります。したがって、その変数が出力の独自の部分で定義されていない限り、BまたはCまたは別の変数の存在に依存することはできません。 関数やプログラムが独自のソースコードを読み取ることはできません。 これは、コードゴルフ、最短のコード(Aの出力)で、バイト数の勝ちです。
10 code-golf  quine 

2
ダンジョンを掘る数字
編集:質問の最後に、ボーナスパズルの最初のソルバーに100の評判の賞金を授与します! この賞金には期限がないため、回答が表示されたときにのみ、賞金を質問に追加します。 1桁の正の整数の減少しないリストが与えられた場合、桁を掘るダンジョンの深さを決定する必要があります。 ███ ███ A dungeon with 5 blocks removed and a depth of 3. ███ ███ ███ ████ ████████ 掘り始める前に地面は水平です。 すべての指は下から土のブロックを1つだけ削除できますが、ダンジョンの外側からその位置に到達する必要があり、ブロックを削除した後、ブロックはダンジョンを離れる必要があります。そうしている間、数字は水平ステップでその数値を超えて下降または上昇することはできません。 数字は掘るために次の戦略を使用します: 最小の値を持つ数字が最初に掘り、その後、次のディガーは常に残りの数字の次に小さい値になります。 最初の桁はどの位置でも掘ることができます。(すべての地面は同じです。) 次の数字は、常に開始された列の一番左にあり、そこから出たり入ったりすることができます。そのような列が存在しない場合、右端の列の右側にある新しい列を掘り始めます。 たとえば、数字1 1 1 2 3 3は次のダンジョンを掘ります(どの種類の数字がその位置を掘り起こすかを示す数字で段階的に視覚化します)。 ███1████ ███11███ ███11███ ███11███ ███11███ ███11███ ████████ ████████ ███1████ ███1████ ███1████ ███13███ ████████ ████████ ████████ ███2████ ███2████ …

1
粘菌は数えることができます!
バックグラウンド 粘菌は素晴らしいです。あなたがそれらを食料源のある表面に置くと、彼らは彼らの巻きひげを広げて食料を見つけ、その後、彼らはその源の間のつながりのネットワークを形成します。この課題では、食べ物を探す粘菌をシミュレートします。さらに、この特定のカビは、十分に検出されると停止します。 入力 入力はL、言語のネイティブ形式の2D整数座標のリストと、非負整数Nです。リストLは重複がないことが保証されていますが、ソートされない場合があります。入力Nは0からまでの長さですL。 リストLは、食料源の座標のセットを表します。たとえば、リスト [(0,0),(2,-1),(3,1),(0,4),(5,5)] 視覚的に次のように解釈できます o o o o o 出力 出力はK、入力と同じ形式の2D整数座標の別の重複のないリストです。粘菌によって形成されたネットワークを表し、次の条件を満たす必要があります。 交点LとK正確に大きさを持っていますN。 セットKは整数グリッドのサブセットとして接続されます(直交または対角隣接を介して)。 の座標Kが削除されると、最初の2つの条件を満たさなくなります。 の場合N = 0、出力は空のリストでなければならないことに注意してください。 上記リストの許容出力の一例LとN = 4なるであろう [(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)] これは次のように視覚化できます xxO Oxx x x x x x O O o それぞれがどこO表すの両方の座標LとK、それぞれxの座標を表しKなくにL。他の出力も受け入れ可能であり、 "tendrils"は可能な限り最短である必要はありません。たとえば、これも許容できるソリューションです。 xxOxx Oxx x x x x x x o x O x Ox …

3
セルオートマトンのシーケンスの特定
バックグラウンド この課題のために、n-stateセルオートマトンはf、状態セットから2つの数値{0, 1, ..., n-1}を入力として受け取り、そのセットから別の数値を出力として返す単純なバイナリ関数です。これは、少なくとも2の長さの数値のリストに適用できます。L = [x0, x1, x2, ..., xk-1] f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)] 結果のリストの要素は元のリストより1つ少ないことに注意してください。時空図のfから始まるは、L繰り返し適用して得られたリストのリストであるfとL、リスト内の結果を収集します。最終的なリストの長さは1です。状態セットのすべての2要素リストが、時空間図のいくつかの行の連続したサブリストである場合、リストLはの識別シーケンスであると言います。これは、他の状態のCAがその正確な時空図を持たないという条件と同等です。fLn 入力 入力は、nx行n整数の行列M、L長さが2以上の整数のリスト、およびオプションで数値nです。マトリックスがM定義n-state CA fによってf(a,b) = M[a][b](0ベースのインデックスを使用して)。これは、ことが保証されn > 0、そのMとLのみ状態集合の要素を含みます{0, 1, ..., n-1}。 出力 LCAの識別シーケンスである場合、出力は一貫した真の値fであり、それ以外の場合は一貫した偽の値になります。これは、すべての「はい」インスタンスは同じ真理値をもたらし、すべての「いいえ」インスタンスは同じ偽値をもたらすことを意味します。 例 入力を考えてみましょうn = 2、M = [[0,1],[1,0]]とL = [1,0,1,1]。マトリックスは、MバイナリXORオートマトンを定義f(a,b) = a+b mod 2し、時空図最低LIS 1 0 …

5
あいまいなローマ数字の魔方陣
古代ローマの王は、魔方陣が有効かどうかを判断するのに苦労しています。彼がチェックしている魔方陣には、数字の間にセパレータが含まれていないためです。彼はソフトウェアエンジニアを雇って、魔法陣が有効かどうかを判断する手助けをしました。 入力の説明 入力はSTDINまたはコマンドライン引数で受け取ります。変数で入力を事前に初期化することはできません(たとえば、「このプログラムは変数への入力を想定していますx」)。入力は次の形式です。 <top>,<middle>,<bottom> それぞれ<top>、<middle>、と<bottom>しか大文字の文字を含む文字列ですI、VとX。スペースやその他の文字は含まれません。各文字列は3つのローマ数字を表すため、3x3の数値行列になります。ただし、これらのローマ数字はあいまいである可能性があります(ただし、そうである必要はありません)。これを例を使って説明します。次の3つのローマ数字の行の例を考えてみます。各数字の間にスペースはありません。 IVIIIIX 文字の間にスペースがないため、ここの数字には2つの可能性があります。 1、8、9(I VIII IX) 4、3、9(IV III IX) マトリックスの3行すべてが不明確である可能性があると考える場合、単一の入力から多くの異なる3x3マトリックスが存在する可能性があります。 I VII I IX各行は常に3つのローマ数字を表すため、1、7、1、9()などのシーケンスは使用できないことに注意してください。また、ローマ数字は有効でなければならないため、1、7、8(I VII IIX)などのシーケンスも使用できないことに注意してください。 出力の説明 出力: 整数A。ここでA、あいまいな入力から形成できる一意の3x3行列の数。 ユニークな3x3マトリックスのいずれかが魔方陣を形成する場合の真実値、または: falsy値ならばどれもユニークな3×3の行列のは、魔方陣を形成していません。 真実で偽りの値は一貫している必要があります。それらはコンマで区切られます。 ユニークと見なされるものについて、いくつかの説明が必要です。マトリックスが以前に見つかったマトリックスと正確に同じ位置に正確に同じ数を持たない限り、それは一意としてカウントされます。これは、以前に見つかったマトリックスの反射などが一意としてカウントされることを意味します。 入力と出力の例 これらの例では、私はtrue私の真実の値と私の偽りの値として使用していfalseます。 入力:VIIIIVI,IIIVVII,IVIXII 出力:(24,true 魔法の三角形は8-1-6、3-5-7、4-9-2です。) 入力:IIIXVIII,IVIII,VIIII 出力:210,false エクストラ 選択した言語に含まれている場合、組み込みのローマ数字変換関数を使用することはできません。

4
プレリュード構文チェッカー
Preludeは難解なプログラミング言語であり、有効なプログラムを構成するものに対する制限はほとんどありませんが、珍しいものです。印刷可能なASCIIテキストの任意のブロック(「ブロック」は、印刷可能なASCIIの行が改行で区切られることを意味します-0x0A)は、次の条件が満たされている場合に有効です: テキストのすべての(垂直)列には、(およびのいずれかが含まれます)。 垂直位置を無視して、(と)はバランスがとれています。つまり、それぞれ(と)その右側の1つだけがペアになり、その逆も同様です。 印刷可能なASCIIと改行を含む文字列を指定して、それが有効なPreludeプログラムを構成するかどうかを決定するプログラムまたは関数を記述します。STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を受け取ることができます。選択した2つの固定された 真偽値を使用して、結果をSTDOUTに返したり、出力したりできます。 入力が長方形であると想定してはいけません。 これはコードゴルフなので、最短の提出(バイト単位)が勝ちます。 例 以下は有効な Preludeプログラムです(実際、これらは実際の Preludeプログラムです): ?1-(v #1)- 1 0v ^(# 0)(1+0)#)! (#) ^#1-(0 # 1(# 1) v # - 1+) vv (##^v^+ ? v-(0 # ^ #) ? 1+ 1-! そして、ここにいくつかの入力がありますが、すべて無効です: #(#(##)##)##( )##(##(##)#)# #(#) )### #(## (##) (##) (#)# (##) (### #(#) (##) #(#) …

4
シフト通訳を書く
編集:あなたの一部が疑ったように、公式インタープリターにバグがありました:の構成の順序.が逆になりました。私は2つのバージョンのインタープリターを持っていて、ここでは間違ったバージョンを使用しました。例は、この誤ったバージョン用にも書かれています。リポジトリのインタープリターと以下の例を修正しました。の説明>も少しあいまいだったので修正しました。また、時間がかかることをお詫びし、実生活に巻き込まれました。 EDIT2:私のインタプリタの実装にはバグがあり.、例に反映されていました(未定義の動作に依存していました)。この問題は修正されました。 前書き Shiftは、数年前に作成した難解な関数型プログラミング言語ですが、今日公開されました。スタックベースですが、Haskellのような自動カレーも備えています。 仕様 Shiftには2つのデータ型があります。 任意の正のアリティ(入力数)を持ち、出力のリストを返す関数。たとえば、唯一の入力を複製する関数にはアリティ1があり、2つの入力を交換する関数にはアリティ2があります。 ブランクはすべて同一であり、機能以外の目的はありません。 シフトプログラムは0個以上のコマンドで構成され、各コマンドは単一のASCII文字です。合計で8つのコマンドがあります。 !(適用)スタックから関数fと値をポップしx、に適用fしxます。場合はfアリティ1を持って、リストにはf(x)、スタックの先頭に追加されます。アリティがあるn > 1場合、新しい(n-1)-ary関数gがスタックにプッシュされます。入力を受け取り、戻ります。x1,x2,...,xn-1f(x,x1,x2,...,xn-1) ?(blank)スタックに空白をプッシュします。 +(clone)は、入力を複製する単項関数をスタックにプッシュします。任意の値xがにマップされ[x,x]ます。 >(shift)はn-ary関数を受け取る単項関数をスタックにプッシュし、最初の引数を無視し、残りの引数を呼び出し、結果の前にタックfする(n+1)-ary関数gを返します。たとえば、は入力を受け取ってを返すバイナリ関数です。xfxshift(clone)a,b[a,b,b] /(fork)は、3つの入力を受け取る3項関数をスタックにプッシュし、が空白の場合はそれ以外a,b,cを返します。[b]a[c] $(呼び出し)は、関数fと値をポップするバイナリ関数をスタックにプッシュし、そうxするのfとxまったく同じように適用され!ます。 .(鎖)スタックにプッシュ二つの機能をポップバイナリ関数fとgし、その組成を返す:関数hと同じアリティを有しf、通常はその入力をとるには、適用されるfそれらにし、次いで完全適用g結果に(コールそのアリティが指示する回数だけ)、の出力からの未使用のアイテムはの結果にf残りhます。たとえば、それfが2番目の引数を複製するバイナリ関数で、gがcallであるとします。スタックが含まれている場合は[f,g,a,b,c]、私たちが行う.!!、それが含まれています[chain(f,g),a,b,c]。!!次に行う場合、f最初にに適用されa,b、[a,b,b]、それからgその最初の2つの要素に適用され[a(b),b]ます[a(b),b,c]。そのアリティは2であるため、生成し、スタックは最終的にになります。 @(言う)単純に入力を返す単項関数をプッシュし、0それが空白1か、関数かを出力します。 !値をスタックにプッシュする以外のすべてのコマンドは、入力を実行する方法がなく、何かを出力する唯一の方法はを使用すること@です。プログラムは、コマンドを1つずつ評価し、「say」が呼び出されるたびに0sまたは1sを出力して終了することによって解釈されます。ここで説明されていない動作(空白の適用、長さ0または1のスタックの適用、空白での「チェーン」の呼び出しなど)は定義されていません。インタープリターがクラッシュしたり、警告なしに失敗したり、入力を要求したりする場合があります。 タスク あなたの仕事はシフトの通訳を書くことです。STDIN、コマンドライン、または関数の引数から解釈されるShiftプログラムを取得し、STDOUTに出力するか、0sおよび1sの結果の出力(おそらく無限)を返す必要があります。関数を作成する場合、何らかの方法(Pythonのジェネレーター、Haskellの遅延リストなど)で無限長の出力にアクセスできる必要があります。または、別の入力である数値を受け取り、それよりも長い場合はn少なくともn出力の文字を返すことができますn。 最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース このシフトプログラムは次のように出力します01。 ?@!@@! 左から:空白を押し、「発言」を押してから、発言を空白に適用します。これは出力します0。次に、sayを 2回押して、2番目の発言を最初の発言に適用します。これは出力します1。 このプログラムは永久にループし、出力を生成しません。 $+.!!+!! プッシュ呼び出しとクローンを作成し、それらにチェーンを適用します(チェーンはバイナリ関数である!ため、2つのが必要です)。これで、スタックには1つの引数を取り、それを複製して、2番目の最初のコピーを呼び出す関数が含まれています。では、この関数を複製してそれ自体を呼び出します。+!! このプログラムは印刷します0010: ?@$.++>!.!!.!!.!!!!+?/!!!@!@>!!! 空白を押して言ってください。次に、2番目の引数をコピーするバイナリ関数を作成してからb、最初の引数をコピーしaてそれ自体で作成し、次にそのコピーをのコピーに適用してb、を返し[a(a(b)),b]ます。適用言うと、ブランク、その後、適用発言権をスタック上に残りの二つの要素に。 このプログラムは印刷し0ます。!!!追加したそれぞれについて、追加のを出力し0ます。 ?@+$>!>!+>!///!!>!>!.!!.!!.!!+!!!! 空白を押して言ってください。次に、f,g,x入力としてを返す3項関数を作成します[f,f,g,g(x)]。その関数のクローンを作成し、それ自体、たとえば、および空白に適用します。このアプリケーションはスタックを変更しないため、必要な回数だけ関数を再度適用できます。 このプログラムは無限シーケンスを出力します。s 001011011101111...の数は1常に1ずつ増加します。 @?/!@>!??/!!>!+.!!.!!.!!.+>!.!!$$$$+$>!>!$>!>!+>!$>!>!>!+>!>!///!!>!>!>!.!!.!!.!!.!!.!!.!!.!!.!!.!!.!!+!!!!! リポジトリには注釈付きのバージョンが含まれています。

6
フィンランド語の2つの名詞の格のリスト
前書き この課題では、フィンランド語の2つの名詞の格を正しくリストすることがあなたの仕事です。ツイストは、リストの1つをガイドとして使用して、もう1つを作成できることです。 名詞 データとして、次の2つの偏角テーブルを使用します。彼らは、2つの名詞の格を、上記のWikipediaの記事と同じ順序で、1行に1つの格を、該当する場合は単数形:複数の形式でリストします。 表1:ovi(「ドア」)のケース ovi : ovet oven : ovien oven : ovet ovea : ovia ovessa : ovissa ovesta : ovista oveen : oviin ovella : ovilla ovelta : ovilta ovelle : oville ovena : ovina oveksi : oviksi ovin ovetta : ovitta ovine 表2:ジャルカ( "足")の症例 jalka : …

4
バイナリカウンターをquineで記述します
s_zeroとs_oneを呼び出す2つのコードフラグメントを記述します。 プログラム(l、n)は、左側にs_zeroが埋め込まれた、バイナリのnの桁に対応するs_zeroとs_oneのlコピーで構成されます。 たとえば、s_zero = fooおよびs_one =のbar場合、 Program(4、0 )= foofoofoofoo Program(4、1 )= Program(4、2 foofoofoobar )= foofoobarfoo etc. プログラム(l、n)は、プログラム(l、(n + 1)mod(2 ^ l))のソースを標準出力に出力する必要があります。上記の例でfoobarfoofooはfoobarfoobar、実行時に印刷する必要があります。 あなたのスコアはフラグメントs_zeroとs_oneの長さの合計です

3
グリッド上のロータールーター
入力 入力は単一の文字列で、改行によっていくつかの整数の場合2n+1は長さの行に分割されます。整数は入力の一部ではありません。文字列から計算する必要があります。行は「方向文字」で構成されています。改行が問題になる場合は、縦線に置き換えることができます。2n+1n ≥ 0n>^<v| 入力はサイズの正方形のグリッドを形成し、グリッドの(2n+1)x(2n+1)各セルは、4つの基本方向の1つを指すロータールーターとして解釈されます。グリッドの中心にあるルーターにトークンをドロップすると、ルーターは次の方法でトークンを移動します。トークンがルーターに到達すると、ルーターは反時計回りに90度回転し、トークンが指す新しい方向にトークンを1ステップ移動します。別のルーターに到達した場合、プロセスは繰り返されますが、最終的にトークンはグリッドから落ちます。 出力 出力は、入力と同じ形式のルーターの最終構成です。 例 入力例として、3x3グリッドを考えます <^< ^>< >^v 中央のルーターがトークンを示すために強調表示されている場所です(少しわかりにくいです)。中央のルーターが回転して北を向き、トークンを一番上の行の中央のセルに移動します。 <^< ^^< >^v このルーターは西向きに回転し、トークンを左上隅に送信します。 <<< ^^< >^v 隅にあるルーターはトークンを南に送信するため、中央の行の左端のセルにあります。 v<< ^^< >^v そのルーターは西を向くように回転し、グリッドからトークンを送信します。 v<< <^< >^v これが最終的なグリッド構成なので、プログラムで出力する必要があります。より複雑な例では、グリッドから落ちる前にトークンが同じルーターを複数回通過できることに注意してください。 ルール 関数または完全なプログラムのいずれかを記述できます。これはコードゴルフなので、最小バイト数が優先されます。標準の抜け穴は許可されていません。入力および/または出力に後続の改行があるかどうかを決定できます。 テストケース Input: v Output: > Input: <^< ^>< >^v Output: v<< <^< >^v Input: >>^>> v<vv< >^>^< ^<>>^ vvv>> …
10 code-golf  grid 

2
駐車場のトラック
駐車場にはP台の駐車スペースがありますが、一部のスペースはoctothorpesで表される車で占められてい#ますが、空きスペースはドット.です。すぐにTトラックが到着します。各トラックは、ちょうどL連続スペースを占めます。トラックは隣同士に駐車する必要はありません。 あなたの仕事は、すべてのトラックを駐車するために削除する必要がある車の最小数を見つけるプログラムを作成することです。すべてのトラックが収まる十分なスペースが常にあります。T*L<P 入力 最初の行には、スペースで区切られた3つの整数P、T、Lがあります。2行目には、初期状態の駐車場を表すP文字の文字列があります。 出力 最初の唯一の行で、プログラムは、すべてのトラックを駐車するために削除する必要がある最小数の車を出力する必要があります。 テストケース 入力: 6 1 3 #.#.## 出力: 1 入力: 9 2 3 .##..#..# 出力: 2 入力: 15 2 5 .#.....#.#####. 出力: 3 最短のコードが勝ちます。(注:可能な場合は、pythの実装に特に興味があります)
10 code-golf 

4
あなたが狂ったコードに行を入れて、それをすべて振ります
1つのプログラミング言語を使用して、5つの単一行プログラムを記述します。各プログラムは、個別に実行すると、ハリーニルソンの1972曲「Coconut」に最初の詩の異なる行を出力します。 兄はココナッツを買った、彼はそれを10セントで買った 彼の妹はもう1つ持っていた、彼女はライムにそれを払った 彼女はココナッツにライムを入れた、彼女は両方を飲んだ 彼女はココナッツにライムを置いた、彼女は両方を飲んだ 彼女ライムをココナッツに入れ、彼女はそれらを両方飲みました (歌詞全体) 最後の3行は歌詞が同じなので、最後の3つのプログラムも同じかもしれません。 これらの5つの単一行プログラムを単一の5行プログラムで行ごとに1つ配置できる5つの階乗または120の方法があります。これらの120の組み合わせのできるだけ多くに対して、5行プログラムが詩全体を適切な順序で出力するように、1行プログラムを最適化する必要があります。 例 最も単純な答えは、5つの単一行の印刷ステートメントで、最後の3つは同一です。 print('Brother bought a coconut, he bought it for a dime') print('His sister had another one, she paid it for a lime') print('She put the lime in the coconut, she drank them both up') print('She put the lime in the …

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