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

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

3
事前注文+注文から注文へ
仕事 完全な二分木の先行順および後順トラバーサルが与えられると、その順トラバーサルを返します。 トラバーサルは、それぞれがノードを一意に識別するn個の正の整数を含む2つのリストとして表されます。プログラムはこれらのリストを取得し、適切なI / O形式を使用して、結果の順序トラバーサルを出力します。 入力が有効であると仮定することができます(つまり、リストは実際にはツリーのトラバーサルを表します)。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 定義 完全なバイナリツリーは、有限構造であるノードのユニークな正の整数で、ここで示され、。 完全な二分木は、単一のノードで構成されるリーフのいずれかです。 1 または、2つのサブツリー(左および右サブツリーと呼ばれる)を持つ1つのノードで構成されるブランチ。各サブツリーは完全な二分木です。 1 / \ … … 完全なバイナリツリーの完全な例を次に示します。 6 / \ 3 4 / \ / \ 1 8 5 7 / \ 2 9 完全なバイナリツリーの事前順序走査は、次のように再帰的に定義されます。 ノードnを含むリーフの事前順序走査はリスト[ n ]です。 ノードnとサブツリー(L、R)を含むブランチの事前順序走査は、リスト[ n ] + 事前順序(L)+ 事前順序(R)です。ここで、+はリスト連結演算子です。 上記のツリーの場合、それは[6、3、1、8、2、9、4、5、7]です。 完全な二分木の後順走査は、次のように再帰的に定義されます。 ノードnを含むリーフのポストオーダートラバーサルはリスト[ n ]です。 …

8
数字の三角形
クレジット このコードゴルフの挑戦のインスピレーションについて、ランド・アル・トールの手紙ベースの質問に感謝します。 バックグラウンド この課題の性質は、ランドが「3文字の三角形」で言及したアルゴリズムに基づいています。 それぞれがX、Y、またはZである10文字のシーケンスで開始します。 各行の下に、次の行を作成します。隣接する2つの文字が同じ場合、それらの下に同じ文字を書きます。異なる場合は、その下に3番目の文字を書きます。 次に、10行目に1文字入力されるまで、前の手順を繰り返します。 チャレンジ 上記のアルゴリズムに数学的なスピンをかけます。 まず、スペースで区切られた10桁のシーケンスから始めましょう。各シーケンスは1、2、または3です。 各行の下に、次の行を作成します。隣接する2つの数字が同じ場合、それらの下に同じ数字を書きます。異なる場合は、その下に3桁目を記入してください。 最終番号が1つになるまで、前の手順を繰り返します。 したがって、このアルゴリズムに従って1 2 3 3 1 3 1 3 1 2、たとえばrow で始まる場合、次の三角形が生成されます。 Input: 1 2 3 3 1 3 1 3 1 2 Output: 1 2 3 3 1 3 1 3 1 2 3 1 3 2 2 …

5
素晴らしいグラマーショット
今日、この写真をウェブで見つけました。怠け者のプログラマーなので、実際にGoogleを開いて2、3文字入力したくありません。仕事が多すぎる!これは非常に重要なタスクであるため、自動化する必要があります。 チャレンジ Google検索結果の最初の画像が常に最高であることは誰もが知っています。したがって、ユーザーに提示する必要があります。 パラメータとして文字列を取り、その名前とそのglamour shot後ろの単語を検索すると、Googleで最初に見つかった画像を表示するプログラムまたは関数を作成します。 Google検索クエリ Googleで画像を検索するには、URLクエリパラメータを含める必要がありますtbm=ischとq=queryして、query検索したい名前であること。 私の名前のための有効なクエリ文字列がBasあることでしょうwww.google.com/search?tbm=isch&q=Bas 入力 プログラムまたは関数は、入力の単一のパラメーターを受け取ります。これは、Googleで検索する名前です。この文字列は、文字で構成されます[a-z]、[A-Z]、[0-9]および(スペース)。この文字列はスペースで区切ることができます。Googleでスペースで区切られた文字列を検索するには、スペースをで置き換える必要があります+。たとえば、これは有効なクエリです: www.google.com/search?tbm=isch&q=Bassdrop+Cumberwubwubwub+glamour+shot 出力 画像は、画面に描画するか、ファイルに保存できます(任意の形式)。 googleの最初の検索結果がgifファイルの場合、gifを表示するか、そのgifのフレームを表示できます。 テストケース このスニペットを実行して、期待される結果を確認します コードスニペットを表示 <pre>f('Bas') // www.google.com/search?tbm=isch&q=Bas+glamour+shot <img src="http://i.stack.imgur.com/IViaM.jpg" style="width:40%;height:40%"/> <pre>f('Bassdrop Cumberwubwubwub') // www.google.com/search?tbm=isch&q=Bassdrop+Cumberwubwubwub+glamour+shot <img src="http://i.stack.imgur.com/tdhvW.png" style="width:40%;height:40%"/> コードスニペットを実行する結果を非表示スニペットを展開 これはcode-golfで、バイト単位の最短コードが勝ちです!

2
チャンピオンになる
三目並べ! これは実話なので、名前は変更されています。 ラテン語の先生であるラテン氏は、独自の(冗談ではない)三目並べを作成しました。tic-tac-latinと呼びましょう。ゲームはシンプルで、基本的に三目並べで4 x 4のグリッドでプレイされます。 正式なルール宣言 ラインは、行、列、または対角線のいずれかです。「X」と「O」の2つの記号がありますが、1つまたは両方を別の記号に置き換えることができます。 シンボルを3つと他のキャラクターを1つ持っているときに1ポイントを獲得します。 これらのアレンジメントのスコア: --- O -O-- XXXO XOOX O -XX - O - - X - --- O これらは得点しません: ---- XXXX ---- OOOO ---- XXX- ---- OOO- 1人のプレイヤーが他のプレイヤーよりも多くのポイントを獲得するたびに、ゲームに勝ちます。ボードがいっぱいになった場合にのみ、ゲームは引き分けです。 チャレンジ このゲームを解決してください。あなたの仕事は、勝ちと引き分けのどちらか最適な結果を保証する方法を提供することです。 ソリューションは、最初に開始するか、2番目に開始するかを選択できます(したがって、そのシンボルを選択できます)。ユーザー入力が移動し、対応する表示が変化するインタラクティブなゲームを実装することは必須ではありません。また、ゲームの状態として入力を受け取り、新しいボードまたはそれらの動きの説明を出力する関数またはプログラムでもあります。どちらのオプションも、移動ごとに約10秒以内に実行する必要があります。 一連の動きに対してプレーヤーをプレイすると、最適な結果が得られます。これは、入力位置がプレーヤーでのプレイから到達可能な位置であると想定できることを意味します。提出物は決定論的である必要があり、必ずしも最適性の証拠を提供する必要はありませんが、(打たれることにより)クラックされる場合、あなたの提出物は無効とみなされます(あなたはそれを残すことができますが、見出しに(クラックする)を追加します)。 これは簡単な作業ではないので、有効な提出は印象的であり、受け入れられたダニの価値がありますが、私はコードゴルフを主要な勝利基準にします。 勝者は、1人の勝者が選択されるまでこのリストを下って行くことによって選択されます。 常に勝つ最短の解決された実装 最短の実装
11 code-golf  game 

2
繰り返しを解釈する!
この課題は、繰り返しに関する2チャレンジシリーズの最初の課題です。2つ目はすぐにアップします。 繰り返し(私がちょうど作っ何か)と呼ばれる言語では、無限の文字列が構成さ12345678901234567890...と、1234567890永遠に繰り返すことを。 数値を出力するには、次の構文を使用できます。 +-*/:これにより、繰り返し数字の文字列に演算子が挿入されます。 例: +-> 1+2= 3(間にandを+挿入)+12 +*-> 1+2*3= 1+6= 7(2つの演算子が現在使用されていることを除いて、上記と同じです) /-> 1/2= 0(繰り返しは整数除算を使用) //-> 1/2/3= 0/3= 0(繰り返しは複数の減算と除算で「左の関連付け」を使用します) 各演算子は、c' がない限り、左に1桁の数字が挿入されるように挿入されます(以下を参照)。 c:文字列の次の数字と連結します。 例: c+-> 12+3= 15(をc「継続」1し、次の数字と連結して2、を形成します12) +c-> 1+23=24 ccc -> 1234 ():数字を処理するための括弧。 例: (c+)*-> (12+3)*4= 15*4= 60(繰り返しは操作の順序を使用します) (c+)/c-> (12+3)/45= 15/45=0 (cc+c)/-> (123+45)/6= 168/6=28 s:番号をスキップします(無限の文字列から番号を削除します)。 s+-> 2+3= 5(sスキップ1) csc- > 124(第一cconcats …

6
連続した素数の積
サンドボックスへの提出時点では、17017の評判がありました。これは、4つの連続した素数の積である7×11×13×17として分解できます。 入力整数までの2つ以上の連続する素数のすべての積を出力する関数またはプログラムを作成してくださいn。たとえば、n=143出力する必要がある場合6, 15, 30, 35, 77, 105, 143(または同等の出力形式)。 I / Oおよび抜け穴に関する通常の制限が適用されます。 これはcode-golfなので、最短のプログラムが優先されます。

2
マルセルプルーストとマルコフ解読セキュリティサービスのT9テキスト
この挑戦は、もう精神的にPythonesqueであるかのように... マルコフ連鎖や暗号化技術の予備知識は必要ありません。 あなたはイギリスの警備サービスM1Sから重要な情報を入手する必要があるスパイです。M1Sのエージェントは、Wi-Fi信号が傍受される可能性があること、Android / iOSのセキュリティ脆弱性が悪用されることなどを十分に認識しているため、全員がNokia 3310を使用して、T9自動補完を使用して入力されるテキスト情報を送信しています。 あなたは以前に電話をハッキングしてagency報機関に配送し、キーロガーを素晴らしいプラスチックキーボードの下にインストールしていたので、入力した文字に対応する一連の数字を受け取るので、「ワシは巣から離れてエージェントに警告します」 84303245304270533808430637802537808430243687 ちょっと待って!一部のT9シーケンスはあいまいです(「6263」は「name」、「mane」、または「oboe」になる可能性があります。不明瞭になるほど、疑わしくなります!)、どうしますか?M1Sが使用する入学試験は、マルセルプルーストの傑作「過去の記憶」を15秒で要約することだけなので、chef-d全体の頻度分布に従って、前の単語の次に来る単語を選択します。プルーストの傑作! コードを解読して、元のメッセージを入手できますか? T9の原理 T9自動補完メカニズムは、次のように説明できます。上の図に示すように、アルファベット文字を数字にマップします。 abc -> 2 def -> 3 ghi -> 4 jkl -> 5 mno -> 6 pqrs -> 7 tuv -> 8 wxyz -> 9 <space> -> 0 <other> -> <is deleted> T9復号化装置は一連の数字を受け取り、それらのキーを押して入力できる単語を推測しようとします。標準の頻度表を使用することもありますが、さらに一歩進んで、マルコフ連鎖を使用して次の単語を予測しています! 学習サンプル コーパスは、プルーストの「物事過去の思い出」のこの重く取り除かバージョン(s/-/ /g、s/['’]s //gおよびs/[^a-zA-Z ]//g-仰せられた混乱所有格's!)もともとに掲載さアデレード大学のウェブサイト(この作品のテキストは、オーストラリアでのパブリックドメインです)。 テキスト全体が一つの長い単語のベクトルとして、一つの長い文として、1つの文字列として分析する必要があります(あなたの言語のためのより便利な方)、改行が取り除かれ、スペースで単語に分割。(単一のパラグラフファイルは、githubツールによって眉をひそめられる可能性があるため、提供していません。) …

7
無制限のカウンターストリングを作成する
counterstringは、ソフトウェアのテストで使用される自己記述型テストデータのいくつかの並べ替えです。それが実際にジェームズ・バッハによって発明されたかどうかはわかりませんが、私はそこからそれを知っています。 アイデアは次のとおりです。テストデータには多くのアスタリスク(*)が含まれています。アスタリスクの前の数字は、その時点でのテストデータの長さを示しています。テストデータ内でアスタリスクではない位置を知る必要がある場合は、最後のアスタリスクを見つけ、前の数字を見て、それに続く桁数を追加します。 シーケンスは次のように始まります。 2*4*6*8*11*14*17*20*23* ^ ご覧のとおり、マークされたアスタリスクは位置14にあります。 次のようにファイルが切り捨てられた場合 [...]2045*20 あなたは2047文字のどこかに(2045アスタリスクがプラスのための2の限界があることを導き出すことが可能2とは0)。 その形式の任意の長いテスト文字列(std :: outまたはfileなど)を出力する最短(これはcode-golf)プログラムを作成するのはあなたのタスクです。文字の長さは引数として指定されます。プログラムは、最大2 GBのテストデータ(入力値2147483647文字)をサポートするものとします。 2 GBファイルの「危険な」位置: 8*11* 98*102* 998*1003* 9998*10004* 99998*100005* 999995*1000003* 9999995*10000004* 99999995*100000005* 999999995*1000000006* これは、995 * 999 *から995 * 1000 *または同様の決定を行う場合に@Leaky Nunの質問に答える必要があります。 入力値2147483647の2 GBファイルの終わりは次のとおりです。 2147483640*2147483

6
このボタンは何をしますか?
現在、私の仕事で新しい建物に移動しました。それは最新技術であると想定されており、自動照明、自動ロールダウンシャッターを備えており、現在この町で最も環境に優しい建物として知られています。 しかし、それはあまりうまくいきません。ロールダウンシャッターは曇りの日には時々下がり、太陽が輝いてくると上がり、ライトは5-10ごとにオンとオフを交互に切り替えることでディスコ効果を引き起こすことがあります。分。また、これらのロールダウンシャッターや温度を手動で制御する方法はありませんが、ライトのリモコンはあります。 ただし、これらのリモコンには取扱説明書が付属していませんが、20個を超えるボタンが含まれており、必要なものを除き、あらゆる種類の操作を実行できます。 PS:1.5か月前にSandboxでこのチャレンジを書きました。現在、私たちは、リモコンがどのように機能するかを知っています。 この建物の大きな利点の1つは、外気温が摂氏30度以上ですが、中は常に21室温であるということです。 それがイントロであり、照明のリモコンがこの課題に影響を与えました。 チャレンジ: 最初にランプをオフにしたとしましょう: L その後、あらゆる種類のボタンを押して、ランプの状態を出力します。 ランプのリモコンのさまざまな機能には、次の番号を使用します。マイナス記号がその番号の前にある場合、逆を行います。 1=オン; -1=オフ。 2=強度を25%増加させます。-2=強度を25%減少(暗く)します。 3=スプレッドを50%増やします。-3=スプレッドを50%縮小します。 4 =ライトの種類を切り替えます。 それで、これはすべてかなりあいまいですので、それぞれの意味をもう少し詳しく見てみましょう。 したがって、-1(OFF)はかなり明白であり1、初期のON状態になります(の場合は50%2、の場合は50%3): // // L ==== \\ \\ 2そして-2、光がどこまで進むかです(==25%ごとに追加されます): 0% (equal to a light bulb that is OFF) L 25% L == 50% L ==== 75% L ====== 100% L ======== 3そして-3、光がどこまで広がるかです。 0%: …

17
ポケモンGO進化コスト計算
これらの高レベルの進化を得るために、どれだけ多くのポケモンをキャッチする必要があるのか​​といつも不思議にうんざりしていませんか?もう不思議ではありません!今、あなたはあなたのためにそれを計算する完全なプログラムまたは関数を書きます! チャレンジ: 入力として、プログラムは、ポケモンを次の層に進化させるためにキャンディーのコストのリストを受け取ります。(このリストは、任意の区切り文字で区切るか、関数の引数として使用できます)。プログラムは、指定されたすべてのティアを介して進化するために、進化するものを含め、キャッチする必要があるポケモンの数を返すか印刷します。 これをどのように計算しますか?これと同じように: 1.すべてのキャンディーのコストアップに追加12 + 50 = 62 合計から2減算3つのキャンディー、あなたは進化のために保つ1ポケモンからこのビーイング:62 - 3 = 59 3分割にそれを与えるために、1引くための4により、この数(3教授)、常にceil()結果ceil(59/4) = 15 を取得します:4.最後に、この合計に1を加算して、キャッチする必要があるポケモンの合計数16を取得します! 例Input -> Output: [4] -> 2 [50] -> 13 [12, 50] -> 16 [25, 100] -> 32 [19, 35, 5, 200] -> 65 受賞: アプリは既に携帯電話のほとんどのスペースを占有しているため、プログラムはできるだけ短くする必要があります。最小バイトカウントの完全なプログラムまたは関数は、2週間で受け入れられます!(最初に提出されたエントリによって解決されるタイと!)
11 code-golf  game 

30
入力ごとに乗算表を印刷する
この課題では、入力ごとに乗算テーブルを印刷する必要があります。以下に例を示します。 Input: 2 Output: 0 2 4 6 8 10 12 14 16 18 20 Input: 20 Output: 20 40 60 80 100 120 140 160 180 200 ルール バイト単位の最短コードが優先されます。 この挑戦はコードゴルフです、それはコードゴルフの一般的なルールに従います(code-golf) コードが数字を印刷できない場合は、文字を使用できます。以下に例を示します。 入力:B 出力:BDFHJLNPRT 0から開始するか、番号(20など)から開始するかを選択できます。スペースを入れるか入れないかを選択できます。チャレンジは無料です。入力を取り、乗算表を印刷するだけです。 出力には、指定された数値のタイムテーブルの最初の10メンバーがリストされている必要があります。0 * nは省略できます。

2
テレビには何がありますか?
チャレンジ ここにあるサイトのXMLデータを使用して、現在BBC 1に表示されているプログラムの名前を表示するプログラムを作成します。 情報 すべての時間はロンドン時間で与えられます(投稿時はGMT + 1、10月30日以降はGMT + 0)。したがって、現地時間をロンドン時間に変換する必要があります。 各プログラムには開始時刻と終了時刻が与えられます。現在の時刻がプログラムの開始時刻の後、終了時刻の前である場合、そのプログラムは現在表示されています。とにかくあなたのプログラムは重複を処理するかもしれません。 出力は、次のようにプログラムのタイトルである必要があります。 BBC News ただし、プログラムに字幕がある場合(subtitleタグの存在によって示される)、出力は次のようになります。 Steptoe and Son: The Piano どこSteptoeと息子はタイトルで、ピアノが字幕です。字幕付きのプログラム例は次のとおりです。 <programme> <subtitle>Newcastle</subtitle> <title>Flog It!</title> <end>1710</end> <start>1610</start> <desc> Antiques series. Paul Martin presents from the Discovery Museum in Newcastle. The items uncovered include a book of autographs with a local connection. …

2
右およびtfeL切り捨て可能素数
右切り捨てプライムは、すべてのプレフィックスが(ベース10)素数である素数です。Aは左切り捨てプライムは正確にすべての接尾辞が素数である反対、である(0で始まる素数が許可されていません)。これらのシーケンスは両方とも有限です(83個の右トランケータブルがあり、4260個の左トランケータブルがあります)。 入力として単一の数値を受け入れ、n番目の右切り捨て可能な素数を生成するプログラムを作成する必要があります。ただし、プログラムが逆方向に配置されて読み取られると、n番目の左切り捨て可能な素数が生成されます。 プログラムを後方に配置するには、プログラムを単語に分割し、単語の順序を逆にします。単語は、任意の数の文字で構成できます。 たとえば、次がプログラムの場合: hello world 1234567890 以下は、可能な限り逆方向の配置として許可されます。 各文字で分割: 0987654321 dlrow olleh 空白での分割: 1234567890 world hello 任意の分割(わかりやすくするためにパイプを追加): hel|lo w|orld 1|23456|7|8|90 908723456orld 1lo whel プログラムを逆方向に配置する場合、他の文字と同様に、すべての空白を考慮して逆にする必要があります。 フォワードテスト入力: 1: 2 2: 3 21: 379 60: 239933 83: 73939133 後方テスト入力: 1: 2 2: 3 39: 647 187: 29173 4260: 357686312646216567629137 プログラムは妥当な時間(1分未満)で実行できる必要があります これはコードゴルフなので、バイト数が最も少ないプログラムが勝ちです!

2
ラングフォード弦
チャレンジの説明 ラングフォード文字列の順序のは、N次のように定義されています。 文字列の長さに等しく2*N、 文字列にNは英語のアルファベットの最初の文字が含まれ、各文字は2回表示されますが、 同じ文字の各ペアについて、あるMそれらの間の文字は、どこMアルファベットで、その文字の位置です(A = 1、B = 2、...、Z = 26)。 例えば、オーダーの2つのだけの可能なラングフォード文字列が3あるBCABACとCABACB。ご覧のとおり、これらの両方の文字列にはA、2つの文字の間に1つの文字、2つの文字の間に2つの文字、Bおよび3つの文字の間に3つの文字がありCます。正の整数を指定するとN、すべての順序のラングフォード文字列を出力しますN(合理的な形式で:改行で区切って1つずつ印刷し、リスト/配列を返します...)。 サンプル入力/出力 3: [CABACB, BCABAC] 4: [DACABDCB, BCDBACAD] 5: # no output # 7: [GCFBECBDGFEADA, GBFCBDECGFDAEA, GBDFBCEDGCFAEA, GCAFACDEGBFDBE, GADAFCEDGCBFEB, GACAFDCEGBDFBE, GDAEAFDCGEBCFB, GBDEBFCDGECAFA, EGBFCBEDCGFADA, CGDFCBEDBGFAEA, EGDAFAEDCGBFCB, EGBCFBECDGAFAD, AGABFDBECGDFCE, EGADAFECDGBCFB, AGABEFBCDGECFD, BGDBCEFDCGAEAF, FBGDBCEFDCGAEA, BFGBAEADFCGEDC, CFGACADEFBGDBE, EAGAFBEDBCGFDC, BCGBFCEADAGFED, DAGAFDBECBGFCE, EBGCBFECDAGAFD, CEGDCFBEDBGAFA, CEGBCFBEDAGAFD, …
11 code-golf  string 

15
アルファベット染色体
前書き アルファベットの課題は私たちのDNAにあります。 チャレンジ 次のテキストを正確に印刷します。 AaBbCc cCbBaA BbCcDd dDcCbB EeFfGg gGfFeE HhIiJj jJiIhH KkLlMm mMlLkK NnOoPp pPoOnN QqRrSs sSrRqQ TtUuVv vVuUtT WwXx xXwW Yy yY ZZ zz ZZ Yy yY WwXx xXwW TtUuVv vVuUtT QqRrSs sSrRqQ NnOoPp pPoOnN KkLlMm mMlLkK HhIiJj jJiIhH EeFfGg gGfFeE BbCcDd dDcCbB AaBbCc cCbBaA ルール 各文字の大文字と小文字を一致させる必要があります 末尾および/または先頭の改行および/またはスペースが許可されます …

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