Rosetta Stone Challengeの目標は、可能な限り多くの言語でソリューションを作成することです。プログラミングの多言語性を自慢しましょう!
チャレンジ
あなたの課題は、できるだけ多くのプログラミング言語で、クロスオーバー周波数を使用していくつかの遺伝子をマッピングするプログラムを実装することです。これは主に言語のショーケースであるため、言語が持つあらゆる種類の標準ライブラリ関数を使用できます。
「遺伝子マッピング」とは何ですか?
遺伝子マッピングは、染色体上の遺伝子の相対的な位置を特定するプロセスです。これは、ペアが一緒に継承されない子孫の割合に等しい遺伝子のペアの交差頻度を測定することによって行われます。距離はマップ単位で測定され、1つのマップ単位は交差の1%に相当します。たとえば、遺伝子CとDの交差頻度が11%の場合、遺伝子Cは遺伝子Dから11マップユニット離れた距離にあります。
遺伝子のマッピングは、遺伝子の複数のペアを使用して実行され、相対的な順序が決定されます。たとえば、データ(A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)
は次のマップを生成します。
A..H.D......B
これB......D.H..A
も有効なマップであることに気付いたかもしれません。これは、ミラーの反対側を区別することができないためです。プログラムは出力するものを選択できます。入力には可能なすべてのペアが含まれるわけではありませんが、マップ全体を再構築するのに十分な情報が常に存在します(したがって、有効な出力が2つを超えることはありません)。さらに、数値は常に(実際の生物学とは異なり)うまくいきます。つまり、のようなものはありません(A,B,3) (B,C,4) (A,C,13)
。
入力
入力は数字で始まり、n
その後に遺伝子のリスト(大文字)が続きます。その後、n
3つのデータが存在します。各セットは、1組の遺伝子とそれらの交差周波数(距離)で構成されます。
3,P,H,I
P,H,3
H,I,1
P,I,4
7,A,B,G,Q,U
B,Q,4
A,B,10
G,U,13
Q,U,10
A,G,9
G,Q,3
A,Q,6
入力は厳密に定義されていません。これは、異なる言語では実行可能なものに制限があるためです。たとえば、区切り文字をコンマと改行以外に変更できます。入力フォーマットは主にあなた次第です。
出力
出力は、遺伝子マップのレンディションになります。距離が正確に描かれるように、ピリオドで区切られた遺伝子(大文字)で構成されます。上記の例の出力は次のとおりです。
P..HI *or* IH..P
BG..Q.....A...U *or* U...A.....Q..GB
これも完全に厳格な要件ではありません。たとえば、コンマやスペースなど、ピリオド以外のものを使用できます。
客観的な勝利基準
客観的な勝利基準については、次のとおりです。各言語は、最短のエントリを書くことができる人については個別の競争ですが、全体的な勝者は、これらのサブ競争のほとんどに勝った人になります。これは、多くの一般的でない言語で回答する人が有利になることを意味します。Code-golfは、言語に複数の解決策がある場合の大部分のタイブレーカーです。最短のプログラムを持っている人は、その言語の信用を得ます。
ルール、制限、および注意
あなたのプログラムは2013年12月20日より前に存在した任意の言語で書くことができます。また、私はテストすることができそうにないので、より珍しい/難解な言語で書かれたいくつかの応答を検証するためにコミュニティに頼る必要がありますそれら。
現在のリーダーボード
このセクションは定期的に更新され、言語の数とそれぞれの言語のリーダーを示します。
- AutoHotkey(632)-Avi
- dj(579)-ルービック
現在のユーザーランキング
- Avi(1):AutoHotkey(632)
- rubik(1):dj(579)
n
はありませんが、主に交差周波数(距離)の境界です。常に、たとえば以下になると仮定できます1000
か?