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

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

30
バイナリ文字の文字列を同等のASCII文字に変換します
スペースで区切られたバイナリ文字の文字列を取得し、ASCII文字列に変換します。 例えば... 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 に変換します... Hello World バイナリ文字列はと呼ばれる変数に保存されますs。 これはコードゴルフの挑戦なので、最短のソリューションが勝ちます。

15
回答とコメントの数
この質問/ページの回答数とコメント数(質問と回答の表示と折りたたみ)を標準出力に印刷するソフトウェアを作成します。 スクリプトは、開始時にこのページを閉じて実行する必要があります。 期待される出力例: A12C40 AはAnswers、Cはコメントを表します。
27 code-golf 

23
マンハッタンの周りを歩いていますが、ホテルからどれくらい離れていますか?
不要で複雑な話 私はブロックごとにマンハッタンを歩いていますが、足が疲れて家に帰りたいと思っています。 交通はかなり悪いですが、幸いなことに私はとても裕福で、ホテルで待機しているヘリコプターを持っています。しかし、私は彼らがフライトのためにどれだけの燃料を詰め込むかを知る必要があり、そのために彼らはホテルからの私の直接距離を知る必要があります。私はどのブロックを歩いたかを覚えていて、どのルートを取ったかを伝えることができました。ただし、この距離は正確である必要があります。距離が短すぎると戻れず、長すぎて使用できない燃料を買いました。 それを取得するためにフライトで移動する必要がある距離に変換するプログラムを作成できますか? 仕様: 次の関数を書いてください: 任意のグリッドに関連して歩いたブロックのリストまたは文字列を受け入れます。 U p、D所有、L eftおよびR ight。 大文字でも小文字でもかまいません-例えば。先uにU進む代わりに使用する方が短い場合。 無効な方向には未定義の動作があります-例えば。Xの方向は障害を引き起こす可能性があります。 原点からの直線距離の2倍のfloat / decimal / doubleを返します。 イラストと説明のため: 私の旅は、同じように簡単に記録されている可能性"luluu..."や['l','u','l'...]、それは上、下、左、右のように記録されなければなりません。
27 code-golf 

15
キラキラ光る
人気のある英語の童ryを演奏するプログラムを作成します。 (このファイルは、クリエイティブ・コモンズの下でライセンスされて表示-継承3.0非移植ライセンスの帰属:。Helix84で英語ウィキペディアは、Blahedoで英語ウィキペディア)。 役に立つかもしれないいくつかのウィキペディアの記事: Twinkle Twinkle Little Star(プログラムの出力がどのように聞こえるかを示すオーディオクリップがあります) 現代の音楽記号(上記で使用されている音楽記法について学ぶため) Note#Note frequency(hertz)(各音の周波数を計算する式) 提出のガイドライン: プログラムでは、コンピューターのサウンドカードを使用する必要があります。プログラミング言語がオーディオハードウェアに簡単にアクセスできない場合、プログラムはWAVやMIDIなどの標準形式で出力ファイルを作成する必要があります。 プログラムは実際に出力を生成する必要があります。たとえば、WikipediaからOgg Vorbisファイルを埋め込むことは許可されません。 音質は許容範囲内でなければなりません。少なくとも、歌は簡単に認識できるはずです。できれば、音も良いはずです。 コードサイズ、音質、またはその両方に焦点を当てる必要があります(どちらを決定したかを説明してください)。エレガントなソリューションも素晴らしいでしょう。楽しむ! これはコードゴルフなので、最短のコードが勝ちます
27 code-golf  music  audio 

19
階乗数システムとの変換
階乗ナンバーシステムもfactoradic呼ばれるが、混合基数数字システムです。階乗は、数値の場所の値を決定します。 このシステムでは、右端の数字は0または1のいずれか、右から2番目の数字は0、1または2のようになります。これは、n桁因数分解が最大値を持つことができることを意味します(n + 1)!。 たとえば、階乗数24201を10進数に変換するには、次のようにします。 2 * 5! = 240 4 * 4! = 96 2 * 3! = 12 0 * 2! = 0 1 * 1! = 1 240 + 96 + 12 + 0 + 1 = 349 したがって、階乗数24201は349base 10です。 (349例として)10進数を階乗数に変換するには、次のようにします。 数値よりも小さい最大の階乗を取る。この場合120、または5!です。 349 / 5! = 2 …

30
各文字の4つのコピーでアルファベットを生成します
これは、アルファベットを4回印刷するのと同じではないことに注意してください。 このタスクは、標準出力に英語のアルファベットの各文字の4つのコピーを1行に1つずつ生成するプログラムを作成することです。 A A A A B B B B 等 出力には、各文字の後に改行が含まれている必要があります。 余分な出力のない大文字が推奨されます。ただし、大文字化/削除によってソリューションが長くなる場合は、小文字や余分な空白を使用できます。 追加するために編集:ソリューションは実行するために十分に完成している必要があります。追加のコードを入力することなく、言語の実装を呼び出し、回答からコードを貼り付け、結果を取得できるはずです。 上記の完全性の問題は、Cソリューションのコンテキストで発生しました。確かに、コードゴルフサイトにはこれに関する常識的な規則または慣習が必要ですか?もしそうなら、私は喜んでコミュニティのガイドラインに従います。しかし、これは私の意見です: 特にCに関しては、コードの周りにmain(){... を含める(そしてカウントする)必要}があります。そうしないとコンパイルされないからです。#include <stdio.h>コードがまだコンパイルされている限り問題ないので、警告。一般に、コンパイル言語にはコンパイル可能なユニットが必要です。 式を直接実行する方法がある場合、目的の結果が得られる裸の式は受け入れられます。たとえば、言語にREPLがある場合。なしハスケルを提出することができますので、main=限り、それは実際に書かれたように機能として例えばghciプロンプトを。しかし、それはletあなたの宣言をすることを意味するので、runhaskellフォーマットに固執することは正味の勝利かもしれません。 同様に、awkスクリプトは入力を処理していないため、ブロックはBEGIN(またはEND、stdinがに接続されていると仮定して/dev/null)ブロック内にある必要があります。 等

24
文字列をできるだけ少ない個別の文字で印刷します
作業は簡単です:印刷The quick brown fox jumps over the lazy dog数として使用して明確な可能な限りあなたのソースコード内の文字。 print "The quick brown fox jumps over the lazy dog"26の小文字すべてが少なくとも1回出現し、大文字のT、スペース、および引用文字とともに、29文字のスコアがあります。しかし、あなたはそれよりもっと創造的になることができると確信しています! Brainfuck、Whitespace、および類似の言語(私の判断で)は許可されていません。改行は1文字としてカウントされます。コードは必要なだけ長くすることができます。米国東部標準時の4月21日午後11時59分に解決策を受け入れます。同点の場合、短い回答が受け入れられます。

30
指定された範囲間の素数の合計
aとの間の素数の合計を見つけるための最短コードを記述しますb(包括的)。 入力 aそして、b、コマンドラインまたは標準入力から撮影することができます(スペースは区切り) 1 <= a <= b <=10 8と仮定する 出力 合計を改行文字で印刷するだけです。 ボーナスポイント プログラムが複数の範囲を受け入れる場合(各行に合計を1つ印刷する)、余分なポイントを取得します。:)
27 code-golf  primes 

21
最も効率的かつ最短のコードでの最初のn個の素数のリスト[非公開]
ルールは簡単です: 最初のn個の素数は、(以下にプライムしないN)、標準出力に出力されなければならない(素数コード内で生成されるべきである)改行で区切ら プライムは、組み込み関数またはライブラリを介して生成することはできません。つまり、prime = get_nth_prime(n)、is_a_prime(number)、factorlist = list_all_factors(number)などの組み込み関数またはライブラリ関数の使用はあまり創造的ではありません。 スコアリング-たとえば、スコア = f([コード内の文字数])、O(f(n))はアルゴリズムの複雑さを定義します。nは検出した素数の数です。したがって、たとえば、O(n ^ 2)の複雑さを持つ300文字のコードがある場合、スコアは300 ^ 2 = 90000で、O(n * ln(n))を持つ300文字の場合、スコアは300 * 5.7 = 1711.13(簡単にするため、すべてのログを自然なログと仮定しましょう) 既存のプログラミング言語を使用して、最低スコアを獲得 編集: O(f(n))の「n」が何であるかについての混乱のため、問題は「最初の1000000素数」の検索から「最初のn個の素数」に変更されました、nは見つける素数の数です(素数の検索はここでの問題と問題の複雑さは、見つかった素数の数に依存します) 注:複雑さの混乱を明確にするために、「n」が見つけた素数で、「N」が見つかったn番目の素数である場合、nに関する複雑さはNとNは同等ではない、つまりO(f(n))! = O(f(N)) as、f(N)!= constant * f(n)and N!= constant * n、n番目の素関数は線形ではないことがわかっているので、素数の複雑さは、「n」で簡単に表現できる必要があります。 Kibbeeが指摘したように、このサイトにアクセスしてソリューションを確認できます(ここに、古いgoogleドキュメントリストがあります) これらをソリューションに含めてください- プログラムの複雑さ(些細でない場合は基本的な分析を含む) コードの文字長 最終的に計算されたスコア これは私の最初のCodeGolfの質問です。上記のルールに間違いや抜け穴がある場合は、指摘してください。

8
これをキュビィ!グレースケールのレッスン…えー…色…えー…何でも
ルービックキューブとクールなアートの大ファンである私は、この2つを組み合わせていくつかの本当にクールなことをすることに取り組んでいます。基本的にミニチュアルービックキューブを解いて、ルービックキューブアートを構成する基本的なピクセルを形成します。このようなアートの例は、次のリンクから見ることができます:http : //google.com/search?q=rubik%27s+cube+ art 現在、このCode Golfの目的は、画像を入力として受け入れ、次の方法で変換するコードを作成することです。 画像は、最初はWebセーフグレースケールカラーに縮小されます。この理由は、Webセーフグレースケールパレット(つまり、000000、333333、666666、999999、CCCCCC、およびFFFFFF)を分離する必要があるためです。グレースケールに変換する比色法のアルゴリズムは、http://en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscaleで入手できます。これをインスピレーションとして使用する必要があります。 次に、グレースケールを適切な色にレンダリングします。すばやく分解するには、000000はルービックの青、333333はルービックの赤、666666はルービックの緑、999999はルービックのオレンジ、CCCCCCはルービックの黄色、FFFFFFはルービックの白を指します。 結果のコードは、写真のパレットからルービックの色に直接レンダリングできると思います。Webセーフグレースケールへの変換から、対応するルービックパレットへの変換までの2段階の方法は、プロセスの背後にあるロジックについてのアイデアを提供するためのものです。 ルービックパレットの実際のRGB値は、以下に対応する必要があります。 赤:#C41E3A 緑:#009E60 青:#0051BA オレンジ:#FF5800 黄色:#FFD500 白:#FFFFFF 例として、次の画像からAbraham Lincolnの頭を切り取り、アルゴリズムをレンダリングして以下を生成しました。 グリッドが存在するため、画像を構成するために個々のミニチュアルービックキューブをどのように構成する必要があるかを確認できます。結果の画像の実際のサイズは45ピクセルx 45ピクセルです。つまり、(45/3)*(45/3)= 15 * 15 = 225のミニチュアルービックキューブを使用してこの画像を作成します。私が持っているようなグリッドで結果の画像を表示することを期待していません。 これが必要なものです: このアルゴリズムで処理される画像は、幅xピクセル、高さyピクセルである必要があります。たとえば、xとyは3の倍数です。これは、ルービックキューブモザイクの一部としてのレンダリングを容易にするためです。画像が非常に大きい場合は、処理前に45 x 45〜75 x 75前後のサイズに縮小することをお勧めします。このサイズ変更コンポーネントはオプションです。 画像をモザイクを作成するには、六色のルービックキューブパレットに変換する必要があります。 結果の画像は、処理後に有効なグラフィックファイルである必要があります。コードが機能することを証明するには、アメリカ合衆国の大統領の1人、または有名なハリウッドの有名人のイメージに対して実行します。私の例ではすでにエイブラハム・リンカーンを使用しているため、この大統領は使用できなくなりました。使用した言語、バイトカウント、およびコードのテストに使用したプレジデント/セレブリティ(ショットの前後を含む)を必ず指定してください 各エントリには、テストケースとして一意の社長/有名人が必要です。重複は受け付けません。これにより、異なるコードエントリのテストに重複した結果が使用されないことが保証されます。コードが機能していると言うのは非常に良いことですが、それを証明することは別のことです。 5.最短のコードが優先されます。 これを人気コンテストに変更します...バイトカウントを競わなくても誰がこれを行えるか見てみたいです。だから、2014年2月28日以降、賞金とともにこれを授与します。

10
ModTenの古き良きゲームのようなものはありません
免責事項:ModTenは、このチャレンジの唯一の目的のために作成された架空のカードゲームです。 ModTenのルール ModTenは、標準の52カードデッキでプレイされます。完全なルールはまだ発明されていないため、ハンドランキングのみに焦点を当てます。 ModTenの勝ち手。ウィキペディアのグラフィック。 カードの値 カードには次の値があります。 2から9:額面価値 10:0ポイント ジャック:3点 クイーンまたはキング:8ポイント エース:9ポイント 手の価値 ModTenの手がで作られている2枚のカード。ハンドのベース値は、両方のカードの値を乗算し、最後の桁のみを保持することで得られます(モジュロ10を適用するなど)。 666(7 × 8 )mod 10 = 6(7×8)mod10=6(7\times8)\bmod 10=6 唯一の他のルールModTenは、ということです適しカードはより適さないものより価値があります。慣例により、両方のカードが同じスーツである場合、値に「s」を追加します。 たとえば、9 ♠ -5 valueの値は、「」として示され。これは、あり、カードが適しているためです。5 秒5s5\text{s}(9 × 5 )mod 10 = 5(9×5)mod10=5(9\times5)\bmod 10=5 ハンドランキングと勝者 上記の規則により、18の異なるハンドランクが得られます。これらのランクは、最強から最低(または最もまれなものから最も一般的なもの)まで、次の表にまとめられています。確率は情報提供のみを目的としています。 2つのハンドが与えられると、最低ランクのハンドが勝ちます。両手が同じランクの場合、それは引き分けです(タイブレーカーはありません)。 hand rank | hand value(s) | deal probability -----------+---------------+------------------ 1 | 9s | …

30
最小の固有番号KoTH
最小の一意の番号を選択するボットを作成します。 (私が何年も前に聞いた心理実験に基づきますが、再び追跡することはできませんでした。) ルール 各ゲームは、1000ラウンドをプレイする10個のランダムに選択されたボットで構成されます。 各ラウンドでは、すべてのボットが1〜10(両端を含む)の整数を選択します。同じ値を選択したボットは除外され、最小の値を持つ残りのボットはポイントを受け取ります。 ボットが一意の値を選択しない場合、ポイントは付与されません。 1000ラウンドの終了時に、最もポイントの多いボット(または最もポイントの多いボットすべて)がゲームに勝ちます。 トーナメントは200 *(プレーヤー数)ゲーム続きます。 勝率が最も高いボットがトーナメントに勝ちます。 仕様書 ボットはPython 3クラスでなければならず、2つのメソッドを実装する必要があります:selectとupdate。 ボットはインデックスで構築されます。 select引数は渡されず、現在のラウンドに対するボットの選択を返します。 update前のラウンドで各ボットによって行われた選択のリストが渡されます。 例 class Lowball(object): def __init__(self, index): # Initial setup happens here. self.index = index def select(self): # Decision-making happens here. return 1 def update(self, choices): # Learning about opponents happens here. # Note that …

30
キャラクターをランダムに選択する、plinkoスタイル
選択したランダム性における選択言語がどれほど優れているかを見てみましょう。 与えられた4つの文字、A、B、C、およびD、または4文字の文字列ABCD を入力として、次の確率を持つ文字の出力1: A 1/8(12.5%)の確率で選択される必要があります B 3/8(37.5%)の確率で選択される必要があります C 2/8(25%)の確率で選択される必要があります D 2/8(25%)の確率で選択される必要があります これは、次のPlinkoマシンレイアウトとインラインです。 ^ ^ ^ ^ ^ ^ A B \ / ^ C D あなたの答えは、記述された確率を尊重する真の試みをしなければなりません。回答で確率がどのように計算されるのか(および、それらが仕様を尊重し、疑似乱数性と大きな数の問題を無視する理由)の適切な説明で十分です。 得点 これはコードゴルフなので、各言語で最少のバイトが勝ちます!

22
自然な構造
0を含む自然数は、次のように正式にセットとして定義されます。 番号0は空のセット{}として定義されます 以下のために、N 0、数≥ nは +1として定義されるN ∪{ N }。 結果として、n = {0、1、...、n -1}。 この手順で定義される最初の番号は次のとおりです。 0 = {} 1 = {{}} 2 = {{}、{{}}} 3 = {{}、{{}}、{{}、{{}}}} チャレンジ 与えられたn、その表現をセットとして出力します。 ルール 出力は一貫して任意の使用できるブラケットなどの文字を{}、[]、()または<>。任意の文字(など01)は使用できません。 上記のようにコンマの代わりに、区切り記号には任意の句読記号を使用できます。または存在しない可能性があります。 スペース(改行ではなく)は、arbitrarily意的かつ一貫性なく含めることができます。 たとえば、角括弧とセミコロンを区切り文字とする数字2は[[]; [[]]]、または同等の[ [ ]; [ [ ] ] ]、または[ [ ] ;[ []]] 順序集合の要素は重要ではありません指定されています。したがって、表現では任意の順序を使用できます。たとえば、次の有効な出力は3次のとおりです。 {{},{{}},{{},{{}}}} {{{}},{{},{{}}},{}} {{{}},{{{}},{}},{}} プログラムまたは関数を作成できます。出力は文字列であるか、関数を使用している場合、文字列表現が上記に適合するネストされたリストまたは配列を返すことがあります。 …

30
最後の月曜日
10月31日月曜日はハロウィーンです。そして、それは私に考えさせられました-月の他の月は月の最後の日でもあるのだろうか? 入力 年を表す任意の便利な形式の正の整数10000 > y > 0。 必要に応じて、入力にゼロを埋め込むことができます(たとえば、0025yearの25場合)。 出力 月の最終日が月曜日であるその年の月のリスト。 これは、読者にとって明確である限り、月名(例January, March, October)、ショートネーム(Jan, Mar, Oct)、数字(1, 3, 10)、個別の行、リスト、区切りなどとして使用できます。 出力形式は一貫している必要があります。 すべての年の入力(つまり、一部の入力では月名を、他の入力では月番号を出力できません) 出力ごとだけでなく、一貫として(つまり、あなたは出力できない1ためJanuary同じ出力のJulためにJuly) 基本的に、1つの形式を選択し、それに固執します。 ルール グレゴリオ暦の入力/出力、さらにはを想定しy = 1ます。 うるう年は適切に説明する必要があります(注意:毎年4で割り切れる年を除き、100で割り切れる年ではなく、400-1700、1800、1900で割り切れる場合を除き、すべてがうるう年ではありませんでしたが、2000はそうでした)。 任意の組み込みツールまたはその他の日付計算ツールを使用できます。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。 例 1 --> Apr, Dec 297 --> May 1776 --> Sep 2000 --> Jan, Jul 2016 --> Feb, Oct 3385 …
27 code-golf  date 

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