タグ付けされた質問 「popularity-contest」

人気コンテストは、最高の投票数(賛成マイナス反対)の答えが勝つ競争です。これらは頻繁にクローズされるため、最初にタグ情報を読み、チャレンジをサンドボックスに投稿してください。

30
課題:終了するコードを書く[終了]
私はすぐに終了するコードを検索しています(私ですか?)-まったく型にはまらない方法で。 これは意味しません:System.exit((int) 'A');(Java)。 意味するかもしれません: #!/usr/bin/env python3 # NOTE: This kills ALL RUNNING Python processes. Be careful! def exit(): import os os.system("killall python3") # Windows addon os.system("taskkill /im python.exe /f") exit() 最も賛成の答えが勝ちます!すべての言語、すべてのアーキテクチャ。 編集:例外をスローして終了することはできなくなりました!

30
予期しない機能を引き起こすソースコードの空白行の削除[終了]
プログラムロジックのフローに空白行が存在する場合は正常に動作するが、その行が削除されると予期しない動作が中断または発生するスクリプトを記述します。 標準的な抜け穴と愚かな答えを避けてください。プログラムは、いくつかの整数を追加するだけでも、「有用な」ことを行う必要があります。 複数行の文字列から空行を削除しても、その複数行の文字列から期待される出力が技術的に変更されない限り(つまり、一致するすべての空白行を削除する場合)、カウントされません^$。 ホワイトスペースの愚行も許可されていません。キャリッジリターン、タブ、スペースなどで奇妙なことをしないでください。

2
ミュージカルツイートチャレンジ
これはTwitter画像エンコーディングチャレンジのオーディオバージョンです。 140バイト以下の印刷可能なUTF-8エンコードテキストで少なくとも1分間の音楽を表現できるオーディオ圧縮形式を設計します。 次の3つの引数(プログラム自体の名前の後)をとるコマンドラインプログラムを記述して実装します。 文字列encodeまたはdecode。 入力ファイル名。 出力ファイル名。 (お好みのプログラミング言語にコマンドライン引数を使用する機能がない場合は、別のアプローチを使用できますが、回答で説明する必要があります。) encode操作は、あなたの圧縮された「つぶやき」のフォーマットにあなたの選択したオーディオ形式から変換します、そしてdecode操作があなたの「つぶやき」形式から元のオーディオ形式に変換します。(もちろん、非可逆圧縮を実装することが期待されているため、出力ファイルは入力と同一である必要はなく、同じ形式である必要があります。) 答えに含めてください: プログラムのソースコード。(このページに対して長すぎる場合は、別の場所でホストし、リンクを投稿できます。) 仕組みの説明。 元のオーディオファイルへのリンク、圧縮先の「ツイート」テキスト、およびツイートをデコードして取得したオーディオファイルを含む少なくとも1つの例。(Answererは著作権の「公正使用」アサーションに対して責任があります。) ルール 私はいつでもコンテストルールの抜け穴を塞ぐ権利を有します。 [4月24日編集]encode関数の入力(および関数の出力decode)には、次のような合理的な一般的なオーディオ形式を使用できます。 WAVのような非圧縮波形。 MP3のような圧縮された波形。 MIDIのような「シートミュージック」スタイル。 圧縮された「ツイート」形式では、実際に入力ファイルのサウンドをエンコードする必要があります。したがって、次のタイプの出力はカウントされません。 実際の出力が保存される場所を示すURIまたはファイルパス。 実際の出力がblobとして保存されるデータベーステーブルへのキー。 同様のもの。 プログラムは、一般的な音楽ファイルを圧縮するように設計する必要があります。したがって、特定のサンプルソングに明白に結びついているようなことはしないでください。たとえば、「Twinkle、Twinkle、Little Star」をデモンストレーションしている場合、圧縮ルーチンはシーケンスdo-do-so-so-la-la-soの特定のシンボルをハードコーディングしないでください。 あなたのプログラムの出力は、実際にTwitterを通り抜けて無傷で出てくるはずです。サポートされている正確な文字のリストはありませんが、文字、数字、記号、句読点に固執しようとしています。制御文字、文字、BIDIマーカー、またはその他の奇妙なものを組み合わせないようにします。 複数のエントリを提出できます。 判定基準 これは人気コンテストです(つまり、ほとんどの正味の賛成票が勝ちます)が、有権者は次のことを考慮するよう促されます。 正確さ 圧縮された後でも曲を認識できますか? それはいいですね? どの楽器が演奏されているかをまだ認識できますか? それでも歌詞を認識できますか?(これはおそらく不可能ですが、誰かがそれを成し遂げたら印象的です。) 複雑 ここで例の歌の選択が重要です。 [4月24日追加]この課題は、MIDIまたは同様のフォーマットで最も簡単になります。ただし、波形タイプのフォーマットで動作させるために余分な努力を払う場合、それは余分な信用に値します。 構造は何ですか?もちろん、同じ4つの測定を任意の回数繰り返すだけで、1分間の要件を満たすことができます。しかし、より複雑な歌の構造はより多くのポイントに値します。 このフォーマットは、一度に再生される多くのノートを処理できますか? コード できるだけ短く簡潔にします。ただし、これはコードゴルフではないため、文字数よりも読みやすさが重要です。 結果の品質の向上によって正当化される限り、巧妙で複雑なアルゴリズムでも問題ありません。

3
静物(または感動的なもの)を描く-Game of Lifeで画像を描く
入力としてグレースケール画像が与えられます。あなたの仕事は、ConwayのGame of Lifeで、入力画像にできるだけ近い静的またはループパターンを見つけることです。 出力は、静止画像またはgifに変換可能な何らかの形式のループアニメーションのいずれかです。出力画像の寸法は入力と同じである必要があり、黒と白のピクセルのみが含まれている必要があります。 出力がアニメーションの場合、各フレームはGame of Lifeルールに従って前のフレームから生成され、ピクセルごとに1つのセルが必要です。アニメーションはループする必要があり、最初のフレームは同じルールによって最後のフレームから生成されます。 出力が静止画像の場合、ゲームのルールを適用して同じ画像を生成する必要があります。これは、「生きている」セルが3つ以上または2つ未満の「生きている」近隣を持つことはできず、「死んだ」セルが正確に3つの「生きている」近隣を持つことはできないことを意味します。(これは基本的に上記のアニメーションと同じですが、フレームは1つだけです。) 追加の規則と説明: あなた(またはあなたのプログラム)は、「生きている」セルを白で表し、「死んだ」セルを黒で表すか、その逆を表すかを選択できます。つまり、これをハードコーディングするか、プログラムで入力画像に基づいて選択できます。(ただし、アニメーションのすべてのフレームで同じである必要があります。) 境界条件は周期的である必要があります。つまり、右端の列のセルには左端の列に隣接セルがあります アニメーションの場合、フレームレートはユーザー(またはプログラム)に依存します。グレーのピクセルを近似するには、高速のフレームレートがうまく機能すると思います。 回答に埋め込まれた結果を少なくとも2つ投稿してください。以下のすべての入力画像から結果を投稿できる場合は、望ましいです。 十分に小さいファイルサイズでgifを実現するためにこれが必要な場合は、テストイメージを縮小してもかまいません。より大きなファイルにもリンクしたい場合は、それで問題ありません。自慢したい場合は、高解像度のソースファイルを自由に見つけてください。 コード内の制御可能なパラメーターが多すぎないようにしてください。プログラムの入力のみが画像であることが最善です。例外は、ファイルサイズに影響するため、アニメーションフレームの数を制御するためのパラメーターが必要な場合です。 外部プログラムを使用して、入出力ファイルの形式を変更したり、必要に応じて出力フレームをアニメーションにコンパイルしたりできます。(これは、ファイル形式処理の課題ではありません。) これは人気コンテストなので、投票数が最も多い答えが勝ちです。 ほとんどがこのサイトの他の質問から取られたテスト画像の選択です。(後で「ボーナス」入力画像を追加する可能性があります。) 物事を始めるために、Python 2の非常に馬鹿げた参照の試みがあります。これは、4つの正方形のブロックがGame of Lifeの安定した構造であるという事実を利用しています。入力画像を4倍に再スケーリングし、対応するピクセルが0.5より暗い場合はブロックを描画します。 from skimage import io from skimage import transform import sys img = io.imread(sys.argv[1],as_grey=True) source = transform.resize(img, [i/4 for i in img.shape]) img[:]=1 for x in xrange(source.shape[0]): for y …

9
コーディング標準の妨害[終了]
ソフトウェア企業では、さまざまな開発者が共同で記述したコードのコードの信頼性、移植性、そして最も重要な可読性を高めることを目標とするさまざまなコーディング標準が施行されています。 2つの注目すべき例は、MISRA Cと、JSFプロジェクト用に開発されたC ++標準です。 これらは通常、「must」、「shall」、「should」、「might」などの単語の意味を慎重に指定した後、次の形式になります。 例: 規則50:浮動小数点変数は、正確な等価性または不等価性についてテストされません。 理論的根拠:浮動小数点数は丸め誤差と切り捨て誤差の影響を受けるため、予想された場合でも正確な等価性が得られない場合があります。 これらのコーディング標準は、通常コンパイラの観点から合法であるコードに制限を課しますが、危険または読めないため、「有害と見なされます」。 これを悪用しましょう! あなたはあなたの会社の小さな標準化委員会のメンバーとして受け入れられます。それは会社のすべての開発者が使用する必要がある新しいコーディング標準を設計することを目的としています。他の人には知られていませんが、あなたはひそかに不吉な組織を雇用しており、会社を妨害する使命を持っています。コーディング標準に1つ以上のエントリを提案する必要があります。これは、後で開発者の妨げになります。ただし、これをすぐに明らかにしないように注意する必要があります。そうしないと、標準に受け入れられない危険があります。 言い換えれば、正当であるように見え、委員会の他のメンバーに受け入れられる可能性が高いルールをコーディング標準に導入する必要があります。プロジェクトが開始され、コードに無数の工数が費やされた後、これらのルールを悪用できるようになります(たとえば、技術的または非常に文字通りの解釈)、そうでなければ通常の品質の良いコードに標準に違反しているというフラグを立てる したがって、彼らはそれを再設計するために多大な努力を払わなければならず、ルールはこの時点からそれらを妨げますが、ルールは現在かなり長い間アクティブであるため、純粋な勢いはこれらの役割を生き続け、重大な競合があるので異なるレベルの管理者間で関心がある場合、他のマネージャーはおそらくルールを守り続けるでしょう(彼らは間違いを認めるのは愚かなことでしょう!)、したがって会社を妨害します!ムワハハハハア! 得点 最初の有効なエントリーが勝ってから約2週間後の最高の回答。良い答えのアイデアはありますが、他の誰かが同じアイデアに出くわす可能性があるため、数日後に投稿します。もちろん、スコアに関係なく、私自身の答えは他のものよりも受け入れられません。 有権者は、抜け穴がどれだけ隠れているか、開発者がどれだけイライラするかに基づいて回答を採点することをお勧めします。 ルールと規則 ルールは、上記の例のように専門的に書かれたように見える必要があります ルールは本物に見えるはずです(したがって、「すべての変数には少なくとも1つのアンダースコア、1つの大文字、1つの小文字、2つの数字が含まれている必要があります。」などは受け入れられません。委員会)そして彼らのメリットがすぐに明らかでない場合、あなたは良い根拠を与えるべきです。 ルールを使用/悪用して、後で開発者を妨害する方法を見つけることができるはずです。他のルールのあいまいさを悪用したり、それ自体では無害であるが結合すると悪魔的な複数のルールを使用する可能性があります。 ルールの悪用方法については、投稿の最後にスポイラータグで説明を投稿する必要があります 使用される言語は難解な言語であってはなりません。実際のプロジェクトで広く使用されている言語を選択する必要があるため、Golfscriptのようなものではなく、Cに似た構文の言語が優先されます。

25
終了するが終了しないプログラム[クローズ]
終了時に再び自動的に起動するプログラムを作成します。 同時に実行されているプログラムのインスタンスは1つだけにする必要があります。ほんの一瞬でも。 サイクル中にユーザーが手動で開始したインスタンスは無視できます。しかし、コードは再起動サイクルでそれを行うべきではありません。 プログラムは、再開することが保証されている限り、任意の時間の後に開始できます。 サイクルを停止する唯一の方法は、プロセスを強制終了することです。 ソリューションには、環境(OS、マシン、VM、シェルなどを含むプログラムが実行されている)の再起動を含めないでください。プログラムのみが再起動できます。

12
コードゴルフオブデス[終了]
BSODまたはカーネルパニックを引き起こすコードを記述してください! ルール: Windowsでは、BugCheck(死のブルースクリーン)を発生させる必要があり、Linux(または他の* nixシステム)では、カーネルパニックを発生させる必要があります。 システムに損傷を与えてはなりません(つまり、再起動時に機能するはずです) カーネルモードドライバーが許可されます。 OSとバージョン情報を記載します。 クラッシュの原因を説明します。 クラッシュを引き起こすように特別に設計されたツールを使用することは規則に反しませんが、そうすることはあまり創造的ではありません! 最高の賛成票が勝ちます。

8
重要なのは投票する人ではありません。投票を数えるのは人です[非公開]
シナリオ あなたは大統領選挙が行われている国に住んでいます。各投票者は1票を獲得するため、しっかりと定着した2パーティシステムがあります。(サードパーティは存在しますが、ほとんど投票しません)。 最新の世論調査では、熱狂のレースを示しています。 49%:アルベルト・アルブスト 49%:ホルヘ・サングレ 2%:さまざまなマイナー候補 プログラムの要件 投票カウントソフトウェアの一部を書くために政府に雇われました。標準入力では、次のように、1つの管区の投票の順不同リストが1行に1つずつ与えられます。 Alberto Arbusto Jorge Sangre Jorge Sangre Alberto Arbusto Jorge Sangre Alberto Arbusto Alberto Arbusto Jorge Sangre Juan Perez Jorge Sangre Alberto Arbusto Alberto Arbusto … そして、すべての投票を読んだ後、各候補者が獲得した投票数の概要を出力し、次のように投票数で降順にソートします。 492 Jorge Sangre 484 Alberto Arbusto 18 Juan Perez 6 Mickey Mouse 下手な部分 あなたは、2つの主要な候補者のうちの1人の選挙を盗もうとするパルチザンハックです(どちらかを選択できます)。そのため、あなたのプログラムは、あなたの好きな候補者に対して体系的なバイアスをかけて、誤った投票数を意図的に印刷する必要があります。 もちろん、これを行う必要があるのは、コードまたはその出力を見ている人が誤った動作を認識しない可能性が高い方法です。

6
フォトモザイクまたは:電球を交換するには何人のプログラマーが必要ですか?
Stack Overflowのトップユーザーのアバターから2025枚のヘッドショットのモザイクを編集しました。 (画像をクリックすると、フルサイズで表示されます。) あなたの仕事は、この45×45グリッドの48×48ピクセルのアバターを使用して、別の画像の正確なフォトモザイクを作成するアルゴリズムを記述することです。 テスト画像 これがテスト画像です。最初はもちろん電球です! (ここではフルサイズではありません。画像をクリックしてフルサイズで表示してください。ハーフサイズバージョンは、The Kiss、A Sunday Afternoon ...、Steve Jobs、およびspheresで利用できます。) レイトレースされた球体を除くすべてのウィキペディアに感謝します。 フルサイズでは、これらの画像のサイズはすべて48で割り切れます。大きい画像はJPEGである必要があり、アップロードに十分な圧縮が可能です。 得点 これは人気コンテストです。元の画像を最も正確に描写するモザイクを使用した投稿は、投票する必要があります。私は1週間か2週間で最高票を獲得します。 ルール フォトモザイクは、グリッドから配置された、上記のモザイクから取られた変更されていない 48×48ピクセルのアバターで完全に構成されている必要があります。 モザイクでアバターを再利用できます。(実際には、より大きなテスト画像が必要です。) 出力を表示しますが、テストイメージは非常に大きく、StackExchangeは最大2MBのイメージの投稿のみを許可することに注意してください。画像を圧縮するか、他の場所にホストして、ここに小さいバージョンを配置します。 勝者を確認するには、PNGバージョンの電球または球体モザイクを提供する必要があります。これは、それらを検証して(以下を参照)、モザイクの見栄えを良くするためにアバターに余分な色を追加しないようにするためです。 バリデーター このPythonスクリプトを使用して、完成したモザイクが実際に変更されていないアバターを使用しているかどうかを確認できます。ただ、セットtoValidateとallTiles。ピクセルごとに正確に比較するため、JPEGやその他の損失の多い形式では機能しません。 from PIL import Image, ImageChops toValidate = 'test.png' #test.png is the mosaic to validate allTiles = 'avatars.png' #avatars.png is the grid of 2025 48x48 avatars def …

18
コードのローマ字化
課題は、選択した言語でローマ数字を有効なコードにすることです。 それらは文字列または同様のものの内部に表示されるべきではありませんが、他のトークン、(アラビア語)数字などのリテラル、文字または文字列とまったく同じように機能します。または変数/メソッド/関数識別子など たとえば、Javaでは、次のようiに初期化されたかのようにコンパイルして実行する必要があります42。 int i = XLII; 数字の実際の解析は二次的なものなので、必要に応じてライブラリを使用できますが、これは人気のコンテストなので、創造性が奨励されます。 そのようなことがある場合、実際にローマ数字を使用する言語は使用できません。 がんばろう。

5
段落にパッチを適用
Patch the Imageの精神で、同様の課題がありますが、テキストがあります。 チャレンジ ビット腐敗はあなたの貴重なテキストを苦しめました!ASCII文字で構成され、どこかに長方形の穴がある段落が与えられた場合、プログラムは、段落が可能な限り最適になるように、適切なテキストで穴を埋めようとする必要があります。 さらなる定義 穴は常に長方形で、複数の線にまたがることがあります。 穴は1つしかありません。 穴は必ずしも単語の境界に収まるわけではないことに注意してください(実際、通常は収まりません)。 穴は入力段落の最大25%になりますが、「通常」テキストの「終了」を超えてオーバーラップまたは拡張する場合があります(以下のユークリッドまたはバジャーの例を参照)。 穴を見つけることはこの課題の主要なポイントではない#ため、簡単に識別できるようにハッシュマークのみで構成されます。 入力段落の他の場所にはハッシュマークがありません。 あなたのコードは、以下の例の「通常の」テキストを使用できません-穴のあるテキストのみを受け取り、処理します。 入力は、単一の複数行の文字列、文字列の配列(1行に1つの要素)、ファイルなどとして使用できます。言語に最も適したものを選択できます。 必要に応じて、穴の座標を詳述するオプションの追加入力を取得できます(たとえば、座標のタプルなど)。 提出物にアルゴリズムを記述してください。 投票 投票者は、アルゴリズムがテキストの穴をどの程度埋めているかに基づいて、エントリを判断するよう求められます。いくつかの提案には以下が含まれます: 記入された領域は、残りの段落としてのスペースと句読点のおおよその分布と一致しますか? 塗りつぶされた領域は構文に誤りがありますか?(たとえば、連続する2つのスペース、疑問符が続くピリオド, ,、などの誤ったシーケンスなど) 目を細めた場合(実際にテキストを読んでいない場合)、以前は穴があった場所を見ることができますか? 穴の外にキャメルケースの単語がない場合、穴には何かが含まれていますか?穴の外側に大文字が含まれていない場合、穴には何かが含まれていますか?穴の外に大文字がたくさんある場合、穴には比例した量が含まれていますか? 有効性基準 提出物が有効と見なされるためには、穴の外側の段落のテキスト(末尾のスペースを含む)を変更してはなりません。末尾の単一の末尾の改行はオプションです。 テストケース 形式は、コードブロック内の元の段落の後に、穴のある同じ段落が続きます。穴のある段落が入力に使用されます。 1(画像のパッチ) In a popular image editing software there is a feature, that patches (The term used in image processing is inpainting as @minxomat …

30
2の累乗の合計
チャレンジ 整数の入力を指定xすると1 <= x <= 255、を合計したときに与える2のべき乗の結果を返しますx。 例 入力が与えられた場合: 86 プログラムは以下を出力するはずです。 64 16 4 2 入力: 240 出力: 128 64 32 16 入力: 1 出力: 1 入力: 64 出力: 64 特定の2のべき乗が合計に存在しない場合、出力にはゼロが含まれる場合があります。 たとえば、入力65はを出力する場合があります0 64 0 0 0 0 0 1。 得点 これはcode-golfであるため、各言語で最も短い回答が優先されます。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

3
1つの命令セットコンピューターを設計する!
通知:私は、おもしろいと思った答えに報奨金を差し上げます。 あなたの課題は、チューリング完全な 1命令セットコンピューター(OISC)を設計することです。 OISCは、1つの命令のみを使用する抽象マシンであり、機械語のオペコードが不要です。OISCは、単一の命令を賢明に選択し、無限のリソースを提供することで、複数の命令を持つ従来のコンピューターと同じ方法でユニバーサルコンピューターになることができます。 ここではチューリング完全OISCを作る単一のコマンドの例をいくつか示します。 ルール: その解釈または証拠を提供する必要があります あなたの言語の通訳者を提供する必要があります。このインタプリタは、メモリ/時間によってのみ制限される必要があります(たとえば、ユーザーが課した制限がない必要があります)。(怠laz以外の理由で)あなたの言語の通訳者を提供しない場合、あなたはそれが書かれることが可能であることを証明しなければなりません。通訳が可能でなければなりません。 チューリング完全性を証明する必要があります あなたの言語がチューリング完全であることの正式な証拠を含める必要があります。これを行う簡単な方法は、他のチューリング完全言語と同じ動作を解釈できることを証明することです。解釈する最も基本的な言語はBrainf ** kです。 たとえば、Brainf ** kと同じコマンド(およびユーザーが課すメモリ制限の同じ欠如)をすべて備えた通常の言語は、Brainf ** kで実装できるものはすべて言語で実装できるため、チューリング完全です。 。 これは、非常に実装しやすいチューリング完全言語のリストです。 追加のOISC要件 このOISCには1つの命令のみを含める必要があります。複数の命令を使用して、そのうちの1つをチューリング完全にすることはできません。 OISCは任意の構文を使用できます。あなたはあなたの答えの中で何が命令であり、何がデータであり、何がノーオペレーション(例えば空白)であるかを定義すべきです。クリエイティブに! 引数は整数である必要はありません。たとえば、///はチューリング完全OISCの美しい例です。 入力と出力の取得方法と提供方法は、ユーザーに任されています。ほとんどのOISCは、特定のメモリ位置を介してI / Oを実装しますが、他の方法で実装することもできますので、見つけることをお勧めします。 有効な回答は、投稿に含めるか、言語で解決さ​​れた簡単な課題にリンクすることにより、OISCにサンプルコードを提供する必要があります。 投票 投票者は、退屈な投稿に賛成しないようにしてください。例: 言語 - 同等物 既存のOISCの実装(回答者は独自に作成してください!) 最初の引数が呼び出すコマンドを指定する「OISC」(例) ただし、次のような興味深いクリエイティブな投稿を提出する必要があります。 数学方程式に基づいたOISC ニューラルネットワークに基づくチューリング完全ZISC 特定のメモリ位置以外の方法で出力I / Oが発生するOISC 勝ち 同じように人気コンテスト、最も多くの票と答えが勝ち!がんばろう!

22
割り当て時に状態が変化するオブジェクトを作成します
Rubyでこれが可能であることは非常に奇妙です(すぐに言いません)。 obj = #code redacted print obj.state # Some value. LValue = obj print obj.state # Different value! あなたの課題は、おおよそこの形式のコードを作成することです。オブジェクトを作成し、変数に割り当てます。stateオブジェクトを参照するために古い識別子(上記)を使用している場合でも、オブジェクトが新しい識別子(LValue上記)に割り当てられた後に変化する、上記のような定義済み属性(または決定論的、べき等法)が必要ですobj。 強調のための編集:stateまたは同等のものはdem等でなければならないため、値を変更するアクセサーを作成するか、他の理由で連続して複数回呼び出されたときに異なる結果を返すことは有効な解決策ではありません。または、もっと簡単に言うと、状態を変更するのは割り当てでなければなりません。 割り当てられた言語はすべて資格がありますが、おそらく完全に正当な解決策がない場合もあります。数日後に誰も回答しない場合は、Rubyの回答を投稿し、最高の投票による回答をローリングベースで受け入れます。

4
線を使用して画像を再現する
トゥルーカラーRGBイメージI、描画する最大行数L、および各行の最小mおよび最大Mの長さを取り込むプログラムを作成します。出力画像Oのようなできるだけ見えるとIとを用いて描画さLの間のユークリッド長有する全てがまたはより少ない直線、MおよびMを。 各ラインは単色で、Oの境界内に両方の端点があり、Bresenhamのラインアルゴリズムを使用して描画されている必要があります(ほとんどのグラフィックライブラリは既に対応しています)。個々の線の太さは1ピクセルのみです。 長さ0の行も含め、すべての行は少なくとも1ピクセルを占める必要があります。線は互いに重ねて描画できます。 線を描画する前に、Oの背景を任意の単色に初期化できます(Iに依存する場合があります)。 詳細 OはIと同じ次元である必要があります。 Lは常に非負の整数です。Iの面積よりも大きい場合があります。 mおよびMは、M > = mの非負の浮動小数点数です。2つのピクセル間の距離は、それらの中心間のユークリッド距離です。この距離がm未満またはMより大きい場合、これらのピクセル間の線は許可されません。 ラインはアンチエイリアス処理されるべきではありません。 不透明度とアルファは使用しないでください。 あなたのプログラムは、100万ピクセル未満でLが10,000未満の画像で、最新のコンピューターで実行するのに1時間以上かかることはありません。 テスト画像 もちろん、最も正確または興味深い出力画像を表示する必要があります(LがIのピクセル数の5%から25%の間であり、mおよびMが対角サイズの約10分の1である場合に発生します)。 ここにいくつかのテスト画像があります(オリジナルをクリックしてください)。また、自分で投稿することもできます。 よりシンプルな画像: これは人気コンテストです。最も投票数の多い提出が勝ちです。 ノート 絶対値と同様に、Iの合計ピクセルの割合からLを導出すると役立つ場合があります。例えば、同じことだろうかの8×8画素の画像でした。mとMについても同様のことができます。これは必須ではありません。>>> imageliner I=img.png L=50% m=10 M=20>>> imageliner I=img.png L=32 m=10 M=20img.png 行は境界を越えることができないため、可能な最長の行はIの対角線の長さです。持つMをこれ以上のことは何もかかわらを壊すべきではありません。 当然、mが0で、LがIのピクセル数以上の場合、各ピクセル位置に長さ0の「ライン」を持たせることで、OはIと同じになります。この動作は必須ではありません。 間違いなく、Iの形を再現することは、色を再現することよりも重要です。エッジ検出を検討することもできます。

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