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

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

12
セット内の要素の組み合わせをリストする
n要素のセットが与えられた場合の課題はk、このセットのの要素のすべての組み合わせをリストする関数を作成することです。 例 Set: [1, 7, 4] Input: 2 Output: [1,7], [1,4], [7,4] 例 Set: ["Charlie", "Alice", "Daniel", "Bob"] Input: 2 Output ["Daniel", "Bob"], ["Charlie", "Alice"], ["Alice", "Daniel"], ["Charlie", "Daniel"], ["Alice", "Bob"], ["Charlie", "Bob"] ルール(編集済み) 出力の順序は任意です。 入力は、どのタイプのデータでもかまいません。ただし、出力は入力と同じタイプでなければなりません。入力が整数のリストである場合、出力も整数のリストである必要があります。入力が文字列(文字の配列)の場合、出力も文字列でなければなりません。 コードは、任意の数の入力変数で機能する必要があります。 任意のプログラミング言語を使用できます。 答えは、何でも(文字列、int、double ...)を入力および出力として使用できるはずです。 組み合わせと順列に関連する組み込み関数は禁止されています。 最短のコードが優先されます(バイト単位)。 タイブレーカー:投票。 期間:1週間。 PS 負の数、0などの極端な入力に注意してください。
10 code-golf 

1
数独パズルはいくつありますか?
これは数独ソルバーでも数独チェッカーでもありません。 あなたの課題は、(3次元である数独パズルの「ブロック」サイズの入力として与えられ、その関数またはスクリプトを書くことである古典的な9x9のボードのために、4を16×16ボード、等)数の近似値を計算しますそのサイズで存在する明確なパズル(ソリューション)の。 たとえば、入力3が与えられた場合、プログラムは、6,670,903,752,021,072,936,960という異なる精度の9x9数独パズルの既知の数、またはさまざまな対称性を考慮に入れると5,472,730,538 の望ましい精度の近似値を出力する必要があります。ソリューションでは、対称性をカウントするか無視するかを指定する必要があります。 「必要な精度」は未定義のままです。プログラムは一定時間実行され、その結果を出力したり、指定された有効桁数まで計算したり、永久に実行されたりして、ますます適切な近似を出力します。重要なのは、有限の時間で、必要な精度で結果を計算できるようにする必要があるということです。(したがって、「42」は許容される回答ではありません。)結果の精度を使用可能なマシンのフロートに制限することは許容されます。 オンラインリソースにアクセスしたり、ソースコードをファイル名に保存したりすることはできません。 PS:私はこれが難しい問題であることを知っています(私が間違っていなければNP完全です)。しかし、この質問は、おおよその統計的解決策を求めているだけです。たとえば、1つ(または2つ以上)の制約を満たすランダムな構成を試して、それらの数を計算し、3つの制約すべてを満たすパズルを取得する頻度を確認できます。これは小さいサイズではまともな時間で動作しますが(確かにsize = 3、場合によっては4の場合)、アルゴリズムは任意のサイズで動作するように十分に汎用的である必要があります。 最良のアルゴリズムが優先されます。 PS2:私は、コードゴルフからコードチャレンジに変更して、問題の難易度をより適切に反映し、馬鹿でよくゴルフされたものよりもスマートなソリューションを奨励しました。しかし、明らかに「最適なアルゴリズム」は不明確なので、適切に定義してみましょう。 十分な時間を与え、一定の要素(CPUとインタプリタの速度を含む)を無視するか、または同等に、それらの漸近的な動作を考慮すると、どのソリューションが正確な結果に最も速く収束するでしょうか?

10
バイト配列をbase64に変換する
あなたの使命は、バイトの配列(つまり、0〜255の整数の配列)をbase64に変換する関数/プログラムを記述することです。 組み込みのbase64エンコーダーの使用は許可されていません。 必要なbase64実装はRFC 2045です(「+」、「/」、および「=」による必須の埋め込みを使用) 最短コード(バイト単位)が優先されます! 例: 入力(int配列): [99, 97, 102, 195, 169] 出力(文字列): Y2Fmw6k=

4
アスキーアートを減らす
この課題は、ペーストcut'nから拡大ASCIIアートが、逆に使用して、PetSCIIベースのハーフブロックの文字を: string=" ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█" したがって、目標は、1/2提出されたascii-artによって削減することです。サンプルでは、​​文字列から: OOOOOO OOOOOO OOOOOO OOOOOOO OOOOOO OOOOOO OO OOOOOOO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OOOOO OO OOO OO OO OO OOOOO OO OO OO OO OO OO OO OO OO OO OO OO OOOOOO OOOOOO OOOOOO …

3
反射型進化アルゴリズム
関数を実装してプログラムを書く必要がありますdigitsum(int i)。プログラムは独自のコードを修正する必要があります(言語の場合、これはfe リフレクションでは不可能です。クリエイティブにしてください)、目標を解決するために自分自身を取得します。 あなたは function digitsum(int i){ return i; } そして、関数呼び出しで有効な数字を返すまで上記の関数を変更する進化的アルゴリズムを実装します。 これは人気のコンテストなので、あなたは非常に多くのフリーハンドを持っています。クリエイティブになってください! ガイドライン: 定義された関数から始めます(もちろん、あなたの言語に翻訳されています)。 少なくとも各世代の最も適した関数を出力します。 0 <i <10000でテストされた実際のソリューションを印刷します。 クリエイティブに! しない: プログラムをソリューションにヒントを与えます。言語オプション全体を使用してください! エラーをコンソールにスローします。 外部入力を使用します。プログラムで作成したファイルに書き込んで保存できます。インターネットなし。 賛成票が最も多い有効なソリューションが勝利します。

3
タブを展開(expand(1)を実装)
今回のタスクは、expand(1)タブをスペースに展開するPOSIX ユーティリティのバリアントを実装することです。 あなたのプログラムが取ることですタブストップ仕様をし、その後に標準の入力を読んで、次のタブストップに到達するためのスペースの適切な量を入力してタブ文字を置き換えます。結果は標準出力に書き込む必要があります。 タブストップ仕様 タブストップ仕様は、単一の番号、またはタブストップのカンマ区切りリストのいずれかから成ります。単一の数値の場合は、その数の倍数がコンマ区切りのリストで発生したかのように繰り返されます(つまり4、として機能します4,8,12,16,20,...)。コンマ区切りリストの各エントリは、オプションで接頭辞が付いた正の整数です+。+プレフィックスは、コンマ区切りのリスト内の前の値に相対的な差を示しています。リストの最初の値は絶対値(つまり、プレフィックスなし)でなければなりません。タブストップは、次のスペース以外の文字の列(展開されたタブに続く)を指定し、左端の列を番号0と見なします。タブは常に少なくとも1つのスペースに展開する必要があります。 入出力 タブストップの指定は、プログラムの最初のコマンドラインパラメータとして使用するか、または標準の入力から(改行で終了する)入力の最初の行として読み取るかを自由に選択できます。タブストップが読み取られた後、EOFまでの残りの入力(前者の場合はすべての入力)が処理および拡張されます。拡張出力は標準出力に書き込まれます。 すべての展開されたタブストップ、およびすべての入力は、最大80列幅であると想定されます。すべての拡張タブストップは厳密に増加しています。 例 タブストップの指定4,6,+2,+8はと同等4,6,8,16であり、両方の入力がある ab<Tab>c <Tab><Tab>d<Tab>e<Tab>f に展開されます(␣スペースを示します) ab␣␣c ␣␣␣␣␣␣d␣e␣␣␣␣␣␣␣f 01234567890123456 (Ruler for the above, not part of the output) 1111111 スコアリングは純粋なコードゴルフです。最短のコードが勝ちます。

3
クレイジーな化学方程式
ユーザーから化学式の文字列(スペースなし、文字(大文字と小文字)のみ、数字、角かっこ、数学記号)を取得し、方程式がバランスしているかどうか(正/負の任意のペアの答え)を出力する必要があります:はい/いいえ、true / false、1/0)。アル中、Ar、B、う、C、Clで、クロム、銅、鉄、H、彼、K、N、O、Sと:コードを短くするには、その入力文字列がこれらの要素のみ含めることができると仮定することができますもう一つの:-兆候がある可能性があります。それはすべて数学についてです:+加算を-意味し、減算を意味します。 例: 入力: C6H5COOH-O2=7CO2+3H2O 出力: No 入力: 2Fe(CN)6+2SO2+202=Fe2(SO4)2+6C2N2 出力: Yes 入力: 2SO2=2SO4-2O2 出力: Yes 最短のコードが優先されます。
10 code-golf 

2
できるだけ多くの言語で一連のスパムジェネレータを作成する
ロゼッタストーンチャレンジの目標は、可能な限り多くの言語でソリューションを作成することです。プログラミングの多言語性を自慢して見せてください! この課題では、入力シードテキストを指定して、スパムメッセージを生成するプログラムを作成します。たとえば、入力 [Thank you/Wow/Great], this [blog/post/writing] [gives/provides/delivers] [great/excellent/wonderful/superior] [content/information/data]. You [may/could] [find/get/retrieve] [similar/related] [content/information/data] at spammysite.com. 可能な出力は Thank you, this writing delivers excellent data. You may find similar content at spammysite.com. (https://security.stackexchange.com/q/37436/29804のアイデア) ただし、落とし穴もあります。また、プログラムを別の言語で出力する必要があります。このプログラムを実行すると、スパムテキストとプログラムが別の言語で出力され、スパムテキストとプログラムも別の言語で出力されます... あなたのスコアはになりますcharacter count / (number of languages ^ 2)。 たとえば、Rubyプログラムを作成できます。入力シードテキストを入力として受け取り、ランダムなスパムテキストとPythonプログラムを出力します。 このPythonプログラムを(入力なしで)実行すると、別のランダムなスパムテキストとPerlプログラムが出力されます。 このPerlプログラムを実行すると(入力なし)、別のランダムなスパムテキストが出力されます。 この例では、スコアは元のRubyプログラムの長さを9で割ったものになります(3つの言語があり、3 ^ 2は9です)。 その他の雑多なこと: 少なくとも2つの異なるプログラミング言語を使用する必要があります。 出力される各プログラムをリストしてください。この方法では、一部の言語を使用していない場合でも、ソースを表示できます。次の短い例のテキストを使用できます:[Please/Kindly] …

4
パスのどの方向を表す値を決定する
重要な編集:以前は、例1に誤った値がありましたが、修正されました。 各セルに4つの値のいずれかが含まれる2次元配列が与えられます。 例: 1 2 2 2 2 1 @ . . X X V 1 3 1 4 1 4 e . @ I C V 2 3 1 3 4 2 H H @ X I V 1 4 4 2 1 3 V C C 2 2 …
10 code-golf 

23
O(n)アルゴリズムを使用して整数配列を回転する[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 2年前休業。 整数配列を指定された数kだけ回転させる関数を記述します。末尾からk個の要素は配列の先頭に移動し、他のすべての要素はスペースを作るために右に移動する必要があります。 回転はインプレースで行う必要があります。 アルゴリズムはO(n)以上で実行しないでください。nは配列のサイズです。 また、操作を実行するには定数メモリを使用する必要があります。 例えば、 配列が要素arr = {1、2、3、4、5、6、7、8、9}で初期化される場合 rotate(arr、3)は、要素が{7、8、9、1、2、3、4、5、6}になる結果になります rotate(arr、6)は、{4、5、6、7、8、9、1、2、3}になります。

8
クリスマスカウントダウン
休暇の精神で、そして誰かがすでに冬のテーマを始めたように(雪だるまを作ろう!)私は新しい挑戦を提案します。 クリスマスまでの日数、時間数、分数、秒数(12月25日の真夜中(00:00:00))を、スタンドアロンのウィンドウ(コンソールではなく)に、適切と思われる形式で印刷し、次のように継続的に更新します。値が変化します。 入力-なし。システム時間を読み取る必要があります。 最短コードが勝つ:)文字列「Days」、「Hours」、「Minutes」、「Seconds」、および「Until Christmas」は無料のコードです。必要に応じて、風味を付けることもできます。それらを味付けすることは、素晴らしい出力を生成する目的のために全くあります。コードを保存するためのマジックナンバーを作成する目的で文字列をフレーバー化することはできません。
10 code-golf 

5
本日(9月24日)はHONDAの誕生日です【休業】
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Code Golf Stack Exchangeのトピックとなるようにします。 4年前休業。 今日(9月24日)はHONDA社の誕生日です。元々の会社名は 本田技研工業株式会社 ホンダへのプレゼントをお願いしたいです。タスクは、プログラムの印刷会社名を作成することです。あなたは好きなようにそれを行うことができますが、唯一のルールがあります、ユニコードは許可されていません。ASCIIアートである必要があります。 コードの投稿と出力をお願いしたいです。いつも勝者を決めるために、コードの長さを見ていきますが、この場合のポートレートも重要です。 編集:出力はこれに似ている必要があります:本田技研工業株式会社

6
TUT言語翻訳
次の表に示すように、各文字を対応する「TUTワード」で置き換えることにより、テキストをTUT言語の記述バージョンに翻訳できます(リンクされた記事から抜粋)*: a e h hash o o u yu b bub i ay p pup v vuv c kut j jag q kwak w waks d dud k kak r rut x eks e i l lul s sus y yak f fuf m mum t tut z zuz g …
10 code-golf  string 

5
Skolemシーケンスを生成する
スコーレムシーケンス A スコーレムシーケンスは、一連のある2nすべての番号の数字iの間1とは、n正確に2回出現する、との2つの出現の間の距離がi正確であるiステップ。Skolemシーケンスの例をいくつか示します。 1 1 1 1 4 2 3 2 4 3 16 13 15 12 14 4 7 3 11 4 3 9 10 7 13 12 16 15 14 11 9 8 10 2 6 2 5 1 1 8 6 5 次のシーケンスはスコーレムシーケンスではありません。 1 2 1 2 …

10
直角三角形を生成する
この課題では、2つの数値(スペースで区切られた)を入力として受け取り、xs で構成されるASCII直角三角形を出力する必要があります。 最初の数値は、出力する三角形の幅と高さです。2番目の番号は、直角になるコーナーです。コーナーには、左上から順に英語の読み順で1〜4の番号が付けられています。 1 2 3 4 例(入力とそれぞれの三角形の出力): INPUT | 3 1 | 3 2 | 3 3 | 3 4 ------+-----+-----+-----+---- OUT- | xxx | xxx | x | x PUT | xx | xx | xx | xx | x | x | xxx | xxx プログラムの出力は、それぞれの入力に対してこれらの例と正確に一致する必要があります。 入力は常に有効です。最初の数値は1以上の整数で、2番目の数値は1、2、3、または4です。 …

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