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

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

5
TMPでのfizz buzz [終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Code Golf Stack Exchangeのトピックとなるようにします。 4ヶ月前に閉鎖。 Fizz Buzz問題は、プログラムする方法がわからないインタビュー対象者を排除するために一部で使用されている解決すべき非常に基本的な問題です。問題は: Set N = [0,100] Set F = x in N where x % 3 == 0 Set B = x in N where x % 5 == 0 Set FB = F intersect B For all N: if x in …

4
ワードスピナーパズル
これはワードパズルです。 プログラムは、標準入力で2つの単語を受け入れる必要があります。 単語1が開始単語です。単語2は最後の単語です。 開始単語から、一度に1文字ずつ変更/追加/削除して終了単語に到達する必要があります。各変更後、新しい有効な単語を形成する必要があります。追加された文字は、最初または最後に追加されます。任意の場所から文字を削除できます(ただし、単語は3文字の長さを下回ってはいけません)。注:文字を並べ替えて単語を作成することはできません。 プログラムの出力は、開始ワードから終了ワードまで取得する一連のワードです。 例: Input: Post Shot Output: Post cost coat goat got hot shot 勝者: プログラムは妥当な時間(10秒未満)で実行する必要があります。 賞品ワードへの最短出力シーケンスを生成できるプログラム。 亜鉛->シリコン 複数のプログラムが最短のシーケンスを取得する場合、char内の最短のプログラム(空白は無視)。 それでも複数のプログラムがある場合は、提出日時が使用されます。 ノート: 大文字と小文字は区別されません。 辞書を作成するためのコードは、コードコストには含まれません。 賞品の単語とシーケンスは、http://dl.packetstormsecurity.net/Crackers/wordlists/dictionaries/websters-dictionary.gzから生成され ます。

14
数を推測する
説明文 完全に機能する「数字を推測する」ゲームを作成します。ゲームは次のように2人のプレーヤーでプレイされます。 プレーヤーは1からNの間の数字(A)を選択します プレーヤー2が同じ範囲の数字(B)を選択してAを推測しようとする 最初のプレイヤーは"higher" if A > B、"lower" if A < Bまたは"correct"と 応答しますif A = B。 手順2〜3は、I回または「正しい」が応答されるまで繰り返されます。 「正解」が聞こえた場合、プレーヤー2が勝利し、それ以外の場合は負けます。 スペック 有効なエントリの最小仕様: ユーザーはプレーヤー1またはプレーヤー2としてプレイできます。 コンピュータは別の役割を果たします。 コンピュータは、プレーヤー2としてプレイしている間、実際に数字を推測しようとする必要があります(したがって、指定されたデータに対して推測したり、指定されたデータを無視したりすることは不正行為です) N = 100 またはユーザーによる入力(選択) I = 5 またはユーザーによる入力(選択) プログラムは最後に勝者を発表しなければなりません。 各ステップで何をすべきかについての人間が読める完全な指示(たとえば、「プレーヤー1またはプレーヤー2としてプレイしますか?」、「別の推測を入力してください:」など)-この問題にごちゃごちゃしないでください。単純にしてください。 勝利条件 その順序で: 2番目に投票数の多いエントリより3票以上前に投票した場合、最も高い投票数のエントリが勝ちます。 最短のエントリーが勝ちます。

11
詐欺師をマッピングしてください!
すべての課題が提出されると、生徒番号をファイルのハッシュにマップする辞書が作成されます。 このディクショナリ、またはハッシュマップ、またはマッピング(言語によって何と呼ばれていても)は次のようになります。 {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"} キーは学生番号で、値はハッシュです。 私たちの仕事は詐欺師を選ぶことです!不正行為者は、同一のハッシュを持つものです。 入力が与えられると、{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}関数は次のテキストを返す(または出力する)必要があります。 100 has identical files to 430 104 has identical files to 332 ハッシュが一意であるファイルが言及されていないことに注意してください。 また、ここでの順序も重要です。 {100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"} 次のテキストを返す(印刷する)必要があります。 100 has identical …

3
テキストをキープレスに変換する
私はロボットです。長方形のレイアウトが簡単なため、このキーボードを購入しました。 ~` !1 @2 #3 $4 %5 ^6 &7 *8 (9 )0 _- += tab Qq Ww Ee Rr Tt Yy Uu Ii Oo Pp {[ }] \| Aa Ss Dd Ff Gg Hh Jj Kk Ll :; "' [-enter-] Zz Xx Cc Vv Bb Nn Mm <, >. ?/ …

22
自身がn回あるリストのデカルト積
値のリストと正の整数を指定するnと、コードはリストとn時間のデカルト積を出力します。 たとえば、疑似コードでは、関数は次のようになります。 for x1 in list: for x2 in list: for x3 in list: ... for xn in list: print x1, x2, x3, ... , xn 例: repeated_cart([1,2,3], 3) 1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 3 1 3 1 …

7
そこで、私はそれを修正しました(ロープで)
関連:水平方向に似た(ただしはるかに簡単な)課題: そこに固定(テープを使用) チャレンジ: 大文字および/または小文字(どちらでもかまいません)と改行のみを含む文字列が与えられた場合、rope垂直に配置して修正します。これを行うには、アルファベット内の2つの隣接する文字の違いを確認し(折り返しを無視して下向きにするだけ)、スペースを必要なだけROPE/ で埋めropeます。 注:この課題と(テープを使用して)修正したThere のもう 1つの重要な違いは、rope今回のようにtape(課題の一部で@JonathanAllanが提案した)のように無駄にしていないことです。 例: 入力: abc bcd ddd eex gfz hka imh 出力: abc bcd Rdd deE efR OPO gEP hRE iOR kO PP mE R O P E R O P E R O x P z a E R O P E R …

6
盗難シーケンス:警官
これは警官と強盗です。これは警官スレッドです。強盗スレッドについては、こちらをご覧ください。 私がサイトに参加して以来、OEIS(整数シーケンスのオンライン百科事典)の課題に気づきました。誰がオンライン整数シーケンスのマスターであるかを決定する警官と強盗の挑戦があることは、公正に思われます。 編集:ささいな答えを防ぐために、警官はクラックされる提出ごとに1/2ポイントを失います。さらに、この課題のために、一定のシーケンスは許可されていません。これは、この編集後に投稿されたソリューションにのみ適用されます。 警官 入力がない場合、OEISからのシーケンスを確定的に出力するプログラムまたは関数を記述します。文字の一部のサブセットを削除することにより、プログラムを同じ言語で実行したときに、異なるOEISシーケンスを印刷できるようにする必要があります。新しいシーケンスは、異なる名前または異なるオフセットを持つ最初のシーケンスだけでなく、完全に新しいものである必要があります。どちらのシーケンスも、繰り返される定数値ではありません。 正しいことを確認できるように、最初の関数とOEISシーケンスの名前を指定する必要があります。言語のMAX_INT値または256のどちらか大きい方で動作が疑わしくなっても問題ありません。 強盗 新しいプログラムがOEISから他のシーケンスを出力するように、Copの提出物から文字を削除します。新しいOEISシーケンスの名前とともに新しい関数を提供します。ここにあなたの提出物が有効であることを確認するためのユーティリティがあります(つまり、おかしなビジネスなしに文字を削除します。シーケンス自体はチェックしません)。 警官の提出物からできるだけ多くのキャラクターを削除することがあなたの最善の利益です。別の強盗(元のプログラムを作成した警官を除く誰も)がやって来て、別の異なるシーケンスを見つけるより短い解決策を見つけた場合、その強盗はあなたのポイントを盗みます。(単にゴルフをして同じシーケンスを印刷するだけではポイントを盗むのに十分ではないことに注意してください。) ルールとスコア 1週間が経過してもソリューションを解読できなかった場合は、2番目のプログラムとそれが生成するシーケンスの名前を提供することで、ソリューションに安全のマークを付けることができます。 安全な投稿ごとに1ポイント、クラックした投稿ごとに1ポイントを獲得できます。警官はクラックされた提出ごとに1/2ポイントを失います。別の強盗が、異なるシーケンスを生成する短いプログラムを提供することにより、いつでもクラックされた提出からあなたのポイントを盗むことができることに注意してください。 警官は、1人の言語につき1つのチャレンジのみを投稿できます。 7月7日のUTC 12:00に最も多くのポイントを獲得したプレイヤーが勝利します。

15
シフターを作成する
複数のn場所に「シフト」するには、次の操作を行います。 最後のn桁を削除 n番号の最初に最初の数字のコピーを追加します たとえば、31415数値を3桁シフトするには、最後の3桁を取り出してを取得し31、次に最初の桁の3つのコピーを最後に追加3して、を与え33331ます。 数値が負の場合、代わりに数字を左から取得し、最初の数字を右から「埋める」必要があります。たとえば、文字列31415を-3桁シフトすると、になります15555。 数値が0の場合、変更は行われません。 シフトがプログラムの長さを超える場合、入力された数字が削除され始める可能性があります。つまり、指定された数値が文字列の長さよりも大きい場合、文字列全体が1桁になった後は、それ以上の変更は行われません。 チャレンジ との2つの数値が与えられるnとs、リターンnはs場所をシフトしてシフトします。 テストケース n, s -> result 7243, 1 -> 7724 452, -1 -> 522 12, 1 -> 11 153, 4 -> 111 これはcode-golfなので、有効な最短の送信(バイト単位)が優先されます。
10 code-golf  math 

8
壊れたひものピラミッド
文字列nを指定して、現在の行を基準にして断片に分割された文字列のピラミッドを作成します。 最初の行には、変更されていない文字列が含まれています。 2行目には、パイプで半分に分割された文字列が含まれています。 3行目では、3番目の行で区切られています... 等々。各部分文字列の長さ。ここで、lは文字列nの長さと等しく、 床(l / n) 残った文字は独自のサブストリングに入れられます。使用される最後の行は、部分文字列の長さが2である最初の行です。 テストケース: 入力:こんにちは、世界。 出力: Hello, world. Hello,| world|. Hell|o, w|orld|. Hel|lo,| wo|rld|. He|ll|o,| w|or|ld|. 入力:abcdefghij 出力: abcdefghij abcde|fghij abc|def|ghi|j ab|cd|ef|gh|ij 入力:01234567890abcdef 出力: 01234567890abcdef 01234567|890abcde|f 01234|56789|0abcd|ef 0123|4567|890a|bcde|f 012|345|678|90a|bcd|ef 01|23|45|67|89|0a|bc|de|f 追加のルール: 完全なプログラムまたは関数のどちらか少ない方のコードを使用して記述できます。 入力は常に少なくとも4文字の長さになります。 言語でサポートされている場合は、改行を使用する必要があります。不可能な場合は、改行を: 入力は常に印刷可能なASCIIになります。 プログラムがP対NPを解決する場合は100%マイナス。 リーダーボード: コードスニペットを表示 var QUESTION_ID=104297,OVERRIDE_USER=62384;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function …
10 code-golf  string 

9
事後アクセサリー!
この課題は数学に触発されて事実です。プログラミングではありません。 階乗、またはファクトの数学的表記は感嘆符!です。感嘆符も、not多くのプログラミング言語で共通の記号です。 チャレンジ: 数字と文字を含む文字列+ !を入力として受け取り、以下を出力します。 感嘆符の前にあるものはすべて数式として評価されるべきであり、そう2+2なります4。 単一感嘆符の後にすべてが付属品として追加されなければならないので、その前にあるものは何でもへ:2+2!5与えるべきである45、なぜなら2+2=4、および5アクセサリーです。2+2!5+5与える必要があります410。 ので!意味もnot、だ何もない事実の後に付属品はすべきではない追加されます。だから、2+2!!5与えるべきで4あるため、5付属品ではありません。さて、与えるnot(not(true))==trueので。を与える必要があります:、次に、階乗とが続きます。最初は事実ではありませんが、別の感嘆符の後にあり、したがって、これも事実です。2+2!!!5452+2!!5!5+54102+2=4!5!5+555+5 明確化: 感嘆符は+どちらの側にも隣接しません。 +数字の先行はありません(それは5、ではありません+5)。 最初のの前の式の結果である場合は、オプションで先行ゼロを含めることができます!。両方とも4、04入力として受け入れられる出力:0+0!4 エグゼクティブサマリー:各合計を評価します(!区切り記号として扱います)。次に、!(文字列の先頭から数えて)偶数個の後に現れるすべての数字を破棄します。次に、すべて削除します!。 テストケース: ! <- Empty string 5 5 12! 12 !87 87 !!5 <- Empty string 5+5!2+2 104 5+5!!2+2 10 1!2!3!4!5!6!7!8!9 12468 10+10!!2+2!!3+3!4+4 208 2!!3!5 25 2!!3!5!7 25 10!!!!!!!5 105 これはコードゴルフなので、バイト数(各言語で)が最も短いコードが優先されます!説明を強くお勧めします!
10 code-golf 

3
単純な立方体を描く
実際の3次元の立方体を描画することについての単一の課題はないので、ここに進みます。 チャレンジ あなたの仕事は、遠近法で回転した立方体を描くことです。別のウィンドウまたは画像として表示できます。 入力 入力は、0〜359.99の3つの異なる数値です...これらは、x、y、z軸を中心とした回転を度単位で表します。 0 0 0 30 0 40 95 320 12 出力 別のウィンドウに表示するか、画像を保存できます。任意のタイプのディスプレイを使用できます(ベクターベース、ラスタライズなど)。 編集:ASCIIも許可され、テキスト出力のみでゴルフ言語を使用できます。 ラスタライズされたグラフィックまたはASCIIグラフィックの出力は、少なくとも50 * 50(ラスタライズのピクセル、ASCIIの文字)である必要があります。 追加情報 正のz軸はウィンドウの外を指し、x軸は水平、y軸は垂直です。基本的にはOpenGL標準です。 特定の軸の負の方向に立方体を見る場合、たとえばy軸を見下ろすと、回転は反時計回りになります。 カメラはz軸上にあり、立方体から負のz方向に適切な距離にあります。立方体は(0; 0; 0)にある必要があります。。立方体も完全に表示され、描画フレームの少なくとも50%を占める必要があります。カメラは立方体で正のz方向を向いている必要があります。 立方体の回転は、x-> y-> zの順序で適用されます。 立方体はその中心を中心に回転し、動かない。 2次元空間に立方体を投影するには、点とカメラの間のz軸に平行な距離で立方体のx座標とy座標を分割する必要があります。 ルール ライブラリのレンダリングは許可されていますが、頂点はコードで定義する必要があります。3Dキューブモデルクラスはありません。 テストケース

2
できるだけ早く交差する三目並べ
あたりとしてルークの要求とピーター・テイラーのほか、この課題へ。 前書き 誰もがゲームの三目並べを知っていますが、この課題では、少しひねりを加えます。クロスのみを使用します。3つの十字架を続けて配置した最初の人が負けます。興味深い事実は、誰かが負ける前の最大クロス数は6に等しいことです。 X X - X - X - X X つまり、3 x 3のボードの場合、最大数は6です。したがって、N = 3の場合、6を出力する必要があります。 N = 4または4 x 4ボードの別の例: X X - X X X - X - - - - X X - X これは最適なソリューションです。クロスの最大数が9に等しいことがわかります。12 x 12ボードの最適なソリューションは次のとおりです。 X - X - X - X X - …

2
安全をクラック!
/puzzling/24334/to-catch-a-thiefに触発されました sとs(または任意の他の文字)で満たされたnby n(nそれ自体はオプションの入力)グリッドが与えられます。すべてのセルを同じにすることを目的としています(または)。以下に定義する一連の動きを行うことができます(Puzzling SEリンクとの相違点に注意してください)。0101 セルを選択します。 同じ行と列のすべてのセル(セル自体を除く)は、その反対に変更されます。0へ1と1へ0。 タスクを完了するために必要な最小移動数を出力します。解決できない場合は、負でない整数以外を出力します。最短のコードが勝ちます。 サンプルデータ 1 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 …

9
ヌメロニムかN8?
ヌメロニム単語が数字を使用して短縮された場合(また、「数値収縮」として知られている)です。一般的な短縮方法は、置換された部分文字列の長さを使用して、最初と最後の文字を除くすべてを置換することです。たとえば、のi18n代わりにinternationalization、またはのL10n代わりに使用しlocalizationます。(L小文字はに似すぎているため、大文字になってい1ます。) もちろん、同じフレーズ内のいくつかの単語は同じ省略形を持っている可能性があるので、あなたの仕事は単語のグループをそれらの数字に変換することです、または同じ数字を持ついくつかの異なる単語が存在する場合、プログラムはの結果A7s R4t、略称Ambiguous Result(はい、この結果自体があいまいな結果であることを知っています。) ルール: プログラムまたは関数を使用して、結果を出力または返します。 入力は単一の文字列として取得されます。 出力は、スペースで区切られた単語の単一の文字列です。 プログラムは長さ3の単語を変換する必要はなく、短い単語を変換するべきではありません。 場合l(小文字のエル)の前に発生するであろう1(1)、それは大文字なされるべきです。 場合I(大文字のアイ)が前に発生するであろう1(1)、それは小文字なされるべきです。 入力は印刷可能なASCIIとスペースになります。単語はスペースで区切られます。 最短のコードが勝ちます。 例: A7s R4t -> A7s R4t (OR: A1s R1t, etc) Ambiguous Result -> A7s R4t Billy goats gruff -> B3y g3s g3f Thanks for the Memories -> T4s f1r the M6s (one possible answer, NOT: Thnks fr …
10 code-golf  string 

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