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

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

7
このチャットボットは誰ですか?
目的: タスクはチャットボットを作成することです。チャットボットと一緒に時間をかけて最も深い考えについて話し合うことができます。入力から学習するAIでチャットボットを作成します。あなたのボットは、あなたの最も暗い内なる真実を捨て去るよう促します。 インスピレーション: http://en.wikipedia.org/wiki/Chatterbot http://io9.com/5901579/10-tricks-that-c​​hatbots-use-to-make-you-believe-theyre-human ルール: 任意のプログラミング言語を使用できます。 プログラムは、ファイル名、ネットワーク、またはユーザー入力以外の入力を受け付けません。 事前に設定されたボキャブラリーは存在できません。ボットはユーザー入力から知っているすべてのことを学習する必要があり、議論は何でも可能です。 必須の基準: これはCode-golfではありませんが、シンプルにしてください。ソースコードのサイズはプログラミング言語に対応する必要があります。つまり、GolfScript = short、BF = long、other =常識を使用します。サンプルコードを参照として使用すると、コードはそのサイズの2倍になる可能性がありますが、その後は適切です。 プログラムは、最初の1000文内で遅れることはありません(5〜10秒の遅延)。 合理的な議論は、約20〜30文以内で行う必要があります。 アルゴリズムは、ロジックが可能な限りサンプルコードと異なる必要があります。 オプションのボーナス審査基準: より良いボット学習アルゴリズム、より良いプログラム。 テニスの試合はありません。つまり、会話は「ユーザー>コンピューター>ユーザー」という厳密なループターンに従いません。 模倣は少なく、ボットの動作はユーザーの行動とは異なり、ユーザーの態度からボットの態度の認識を分離します。 たとえば、おしゃべり、静寂、楽観、悲観など、さまざまな変化する気分を感知します。 「ブレイン」を保存およびロードする方法。これにより、ボットと別の日に議論を続けることができます。 インスピレーションのみを目的としたc ++のコード例: #include <iostream> #include <vector> #include <string> #include <sstream> #include <algorithm> #include <iterator> using namespace std; vector<string> words; vector<int> weight1; vector<int> weight2; int oldbw; …

30
人生、宇宙、すべてに答える
仕事 入力として文字列を指定すると、入力文字列が正確に次の場合に42 のみタスクが出力されます。 abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjjkkkkkkkkkkkllllllllllllmmmmmmmmmmmmmnnnnnnnnnnnnnnoooooooooooooooppppppppppppppppqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrsssssssssssssssssssttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzz 入力が前述の文字列と等しくない場合、他の値を出力するか、エラーを生成するか、まったく出力しない場合があります。 受賞基準 これはcode-golfなので、バイト単位の最短コードが勝ちです!
46 code-golf  string 

12
MITの教授は心を読むことができます!
タスクはDevadas教授によるMIT講義「You can mind read minds」から取得されます。トリックの詳細な説明は、リンクされたビデオまたはこのドキュメントに記載されています。それをより簡単な言葉で説明しようとします。 これは1930年代に発明されたもので、「フィッチチェイニーの5つのカードトリック」として知られています。 トリックは次のようになります。 カードのデッキから5つのランダムなカードが選択されます。観客とあなたのアシスタントはそれらを見ることができますが、あなたは見ません。 アシスタント(練習した相手)は、これらのカードのうち4枚を選択し、特定の順序で表示します。非表示のカードは、5枚のカードからランダムに選択されるわけではないことに注意してください。アシスタントは、トリックを機能させるカードを選びます。 4枚のカードから収集できる情報に基づいて、5枚目のカードを推測します。 どうやって? 次の2つの点に注意してください。 5枚のランダムなカードを選択する場合、少なくとも 2枚のカードが同じスーツを持っていることが保証されます1。 以下の画像は、すべてのランク2の円を示しています。円であるため、J、Q、K、A、2、3(モジュラーカウント)をカウントできます。隠されたカードは、同じスーツ(以下で説明)になるため、最初のカードと同じランクではないことが保証されます。最初のカードと隠しカードは、隠しカードが最初よりも1から6ランク高いように選択することが常に可能です(丸で数える場合)。最初のカードが1の場合、非表示のカードは2,3,4,5,6または7になります。最初のカードがJの場合、非表示のカードはQ、K、A、2、3、または4などになります。 アルゴリズム: 最初のカード:このカードには、隠しカードと同じスーツがあります。このカードは、隠しカードのランクを計算するときに使用する基準点にもなります。 2番目、3番目、および4番目のカードは、1〜6の範囲の値をデコードします。3枚のカードをS、M、L(最小カード、中間カード、最大カード)と呼びます。値は次のようにエンコードされます(辞書式順序): S M L -> 1 S L M -> 2 M S L -> 3 M L S -> 4 L S M -> 5 L M S -> 6 したがって、最初のカードのランクが5で、残りの3つのカードのランクが4 Q …

30
ダブルスピークですか?
では、以前の挑戦私は、文字列内の各文字をコピーした文字列を生成するコードのゴルファーを尋ねました。例えば: TThhiiss iiss ddoouubbllee ssppeeaakk!! この課題は、一部のテキストがダブルスピーク文字列の定義を満たすかどうかを単に検出することです。 偶数の文字があります。 ペアに分割される場合、すべてのペアは同じ文字の2つで構成されます。 挑戦 それはコードゴルフです、数バイトでそれをします。 選択した言語を使用します。 オンライン通訳へのリンクを含めてください。 コードはテキストを受け入れます。 簡単にするために、入力は印刷可能なASCII文字のみで構成されます 入力がダブルスピークかどうかの表示を返します。かもしれない: ブール値 文字列(「true」、「false」、「yes」、「no」など) 整数0または1 テストケース: aba-false abba-false aabb-true aaabb-false tthhiiss-true ttthhhiiisss-false

30
乗法永続性
乗法永続性 数字のすべての数字を掛ける 1桁が残るまで繰り返します Numberphileが説明したように: Numberphile「277777788888899の特別なところは?」 Numberphile「乗法持続性(追加映像)」 例 277777788888899→2x7x7x7x7x7x7x8x8x8x8x8x8x9x9 = 4996238671872 4996238671872→4x9x9x6x2x3x8x6x7x1x8x7x2 = 438939648 438939648→4x3x8x9x3x9x6x4x8 = 4478976 4478976→4x4x7x8x9x7x6 = 338688 338688→3x3x8x6x8x8 = 27648 27648→2x7x6x4x8 = 2688 2688→2x6x8x8 = 768 768→7x6x8 = 336 336→3x3x6 = 54 54→5x4 = 20 20→2x0 = 0 ちなみに、これは現在のレコードです。つまり、最小数と最大数のステップです。 ゴルフ 入力として任意の整数を受け取り、入力自体から始めて1桁になるまで各ステップの結果を出力するプログラム。277777788888899の場合、出力は次のようになります。 277777788888899 4996238671872 438939648 4478976 338688 27648 2688 …

30
スティーブバルマーの奇妙な事件
Steve BallmerはMicrosoftの元CEOであり、最近の記事で、「モバイルで何が悪かったのかまだわからない」と主張しています。 以下のようCodeProjectののニュースレターを指摘し、 『その記事のタイトルは非常に多くの箇所で終了し、まだ正確であることができ、』。 入力がない場合、次を出力します。 Steve Ballmer still does not know. Steve Ballmer still does not know what he did. Steve Ballmer still does not know what he did wrong. Steve Ballmer still does not know what he did wrong with mobile. これは示されているとおりに出力する必要があり、プログラムの唯一の出力でなければなりません。単一の末尾改行を含めることができます。 これはコードゴルフなので、各言語で最少のバイトが勝ちます

30
緊急回廊を作る
一部の国では、方向ごとに複数の車線がある通りに緊急回廊を形成する方法に関する推奨事項または法律があります。(以下では、走行している方向に向かう車線のみを考慮します。)これらはドイツで適用される規則です。 車線が1つしかない場合、救助車両が左側を通過できるように、全員が右側に運転する必要があります。 複数の車線がある場合、左端の車線の車は左に移動し、他の人はすべて右に移動します。 チャレンジ N>0通常の車線の数を指定し、N+1ASCII文字の文字列を使用して緊急回廊が形成されたときに車線のレイアウトを出力します。あなたは、ASCIIコードから任意の2つの文字を使用することができる33までの126緊急廊下を示すために1、、と車を示すためのものです。末尾または先頭のスペース、改行などが許可されます。 例 ここではE、緊急回廊とC自動車に使用しています。 N Output 1 EC 2 CEC 3 CECC 4 CECCC 5 CECCCC 6 CECCCCC etc

13
ゴルフマイシェークスピア引用文献
シェークスピアのエッセイを書いている間、引用の参照をより管理しやすい長さに短縮する必要があることに気付きました。私は以前これを書いていました: (Act 1, Scene 2, Lines 345-346) しかし、私は今、次のようにそれらを書くように言われました: (I.ii.345-6) 明らかに、シェークスピアの引用文献を少し下にゴルフするために、ゴルフのコードが必要です。 タスク テンプレート1または2の後に文字列を入力すると、それぞれテンプレート3または4の後に文字列を印刷または返すプログラムまたは関数を作成します。あなただけの行為1から5とシーン1から9をサポートする必要があります。 テンプレート テンプレート1 (Act x, Scene y, Lines a-b) あなたは、と仮定してよいx、5を超えることはありませんy9を超えない、決してaそしてb常にあなたの言語の最大の正の標準的な整数値を超えない正の整数であり、そしてa常に独占未満ですb。 テンプレート2 (Act x, Scene y, Line a) についての情報を除き、テンプレート1と同じ条件b。 テンプレート3 (x.y.a-b) ここで、x資本ローマ数字であり、y小文字ローマ数字であり、aそしてb数であり、そしてb以下から同じ意味の最初の異なる桁以上だけ桁に短縮されますa。 テンプレート4 (x.y.a) についての情報を除き、テンプレート3と同じ条件b。 テストケース ましょうf(s)タスクで定義された関数です。""文字列値を示します。 >>> f("(Act 1, Scene 2, Lines 345-346)") "(I.ii.345-6)" >>> f("(Act 3, Scene 4, …

30
テニスをしましょう
突然テニスをしたいのですが、残念ながらコートはありません! 驚き!ここがあなたの出番です。 私のためにテニスコートを印刷する必要がありますが、秘密の理由により、できる限り少ないバイト数で印刷する必要があります。 テニスコート --------- | | --------- | | | xxxxxxxxx | | | --------- | | --------- これはcode-golfなので、バイト単位の最短コードが勝ちです!

23
キラルパズル
回転の量が鏡像のように見えない場合、形状はキラルです。このパズルでは、キラルコンピュータープログラムを作成します。 このパズルでは、プログラムを文字の長方形のマトリックスと考えます。そのため、この課題に対するすべてのソリューションは長方形でなければなりません(つまり、すべての線は同じ長さでなければなりません)。これらのプログラムは、四半期ごとにローテーションできます。たとえば、プログラム The quickish fish lept deftly rightwards 時計回りに1/4回転すると、次のようになります T h r e i glq heu tpi wtc a k rdi des sfh t lf yi s h これらのプログラムを反映することもできます。同じプログラムが垂直軸に反映されています: hsif hsikciuq ehT yltfed tpel sdrawthgir カイラルプログラムは、任意の回数回転すると、常に「left」を出力するプログラムです。ただし、反映されると、right何度回転しても「」を出力するプログラムが生成されます。 あなたの仕事は、可能な限り少ないバイトでキラルプログラムを書くことです。 追加の規則 出力は大文字と小文字を区別しませんが、一貫している必要があります。(たとえば、「LEFT」と「rIgHt」を出力できますが、このケーシングは回転下で一貫している必要があります) 行は、改行または改行と改行で分割されます。 プログラムは長方形である必要があり、スペースまたはコメントで埋めることができますが、各行は同じ長さでなければなりません。 必要に応じて、すべてのプログラムで末尾の改行(または改行と改行)をオプションで使用できます。

26
プログラムパズルとコード____
入力 印刷可能なASCII文字(32〜126の範囲)で構成される、空ではないエンコード文字列。一部の欠落文字がに置き換えられてい_ます。 出力 不足している文字を含む、すべての文字が小文字の同じ長さのデコードされた文字列。 どうやって? 編集:コメントで@Deusoviが述べたように、これはベーコンの暗号の変形です。 元の文字列のすべての文字を収集し、5でグループ化します。5の完全なグループに収まらない追加の文字は無視されます。 各グループをバイナリに変換します:lowercase = 0、uppercase = 1。これは整数のリストにつながります。 このリストの各値Nを使用_して、元の文字列の各値を、出現順にアルファベットのN番目の文字(0インデックス付き)に置き換えます。 例: prOGraMMIng PuZZleS & cOde ____ prOGr --> 00110 --> 6 --> 7th letter = 'g' aMMIn --> 01110 --> 14 --> 15th letter = 'o' gPuZZ --> 01011 --> 11 --> 12th letter = 'l' leScO …

30
つららを作る
Stack Exchangeの技術的な制限により、タイトルは正しくレンダリングされません。このチャレンジの正しいタイトルは 作る Word Icicle! Word Icicle Word cicle ord cicle ord icle ord i le or i le or i l or l or r 今日の課題は、入力単語からつららを作ることです。完全に印刷可能なASCIIの文字列と、少なくとも2つの非スペース文字を指定して、次の手順を実行します。 文字列の現在の状態を出力します。 字句的に最小の文字(スペース以外)をスペースに置き換えます。同点がある場合は、左端の文字を置き換えます。 文字列にスペース以外の文字が1つだけ含まれるまで、連続する行で繰り返します。 これにより、入力文字列が溶けているように見えるエフェクトが作成されます... I'm Melting!!! I'm Melting !! I'm Melting ! I'm Melting I m Melting m Melting m elting m lting …

30
各文字の最初の出現時に文字列を分割
関連する。 印刷可能なASCII文字列が与えられた場合、以前は同じケースで見られなかった文字が出現するたびに、新しいサブ文字列で始まる空でない文字列のリストにそれを分割します。 例 "mississippi" → ["m","i","ssissi","ppi"] "P P & C G" → ["P"," P ","& ","C ","G"] "AAA" → ["AAA"] "Adam" → ["A","d","a","m"] "" → [] 逸話:結果には0〜95個の要素が含まれます。95 番目のサブ文字列は、その時点ですべての印刷可能なASCII文字がサブ文字列を開始しているため、必ず最後まで継続します。したがって、すべての追加文字が前に発生し、新しいサブ文字列を開始できません。

19
初期コードを複製して、サイズが増加する正方形を作成します
あなたの割り当ては偶数の長さのプログラムを書くことです。これはASCIIアートの正方形(下記)を印刷し、元のソースコードが現在のコードの真ん中に貼り付けられるたびに一辺の長さを増やします。 このタスクを非常にうまく定義するのは非常に難しいので、例を挙げます。 あなたの初期コードがCODEあり、それが印刷されたとしましょう: 0 次に、CODE中央に挿入します。コードが次のようになりCOCODEDE、印刷されるはずです。 00 00 CODE真ん中に再挿入します。コードは次のようになりCOCOCODEDEDE 、印刷されるはずです。 000 000 000 等々。あなたの答えは理論的には何回も繰り返した後でも機能するはずですが、言語のパフォーマンスの制限により、特定のしきい値を超えて合理的に実行できない場合は理解しています。 いくつかのルール: 任意の印刷可能なASCII(32〜127)を正方形に使用する文字として使用できます。選択は一定である必要があります(各反復に同じ文字を使用する必要があります)。 初期出力の正方形の辺の長さは1でなければなりません。 ascii-art squareは、N行(N-1個の改行/改行で区切られた)の文字列として定義され、各行には選択された文字のN個のコピーが含まれます。 出力には、末尾の改行以外の余分な空白を含めることはできません。 入力および出力にデフォルトを使用できます(プログラムまたは関数は許可されますが、スニペットは許可されません)。 コードの中央は、ソースコードが2つの部分に等しくなるように2つの部分に分割できるポイントとして定義されます。 回答は、元のプログラムの長さ(バイト単位)によってスコア付けされます。最も低いバイトカウントが優先されます。同点の場合は、以前に送信された回答が優先されます。 このプログラムを使用して、手動で挿入しなくても挿入を適用できます。

22
なんて奇妙な機能
ここでのタスクは、正の整数の順列(正の整数から自身への全単射)を形成する関数1を実装することです。これは、各正の整数が順列で1回だけ現れることを意味します。キャッチは、関数が偶数よりも奇数を出力する確率が大きいことです。 今、これは奇妙または不可能に見えるかもしれません。確かに偶数と同じくらい多くの奇数がありますか?そして、この直観は有限集合に対しては正しいが、実際には無限集合に対しては成り立たない。たとえば、次の順列を取ります。 1 3 2 5 7 4 9 11 6 13 15 8 17 19 10 21 23 12 25 27 14 29 31 16 33 35 18 37 39 20 41 43 22 45 47 24 49 51 26 53 55 ... サイズがを超えるシーケンスのサブセクションを使用すると、少なくとも偶数と同じ数の奇数があります。したがって、ランダム項が奇数である確率は偶数である確率よりも大きいようです。また、すべての数字の奇数または偶数が最終的にシーケンスに表示され、一度しか表示できないことに注意してください。したがって、シーケンスは真の順列です。111 確率の定義 混乱やあいまいさを避けるために、この質問で確率が意味するものを明確に説明します。 関数があるとしましょう。数の確率は、奇数セットのサイズに設定さの比奇数メンバーの限界として定義されているとして無限大に向かう傾向があります。ffff{ 1 …

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