Rosetta Stone Challenge의 목표는 가능한 한 많은 언어로 솔루션을 작성하는 것입니다. 다국어 프로그래밍을 과시하십시오!
도전
가능한 많은 프로그래밍 언어로 교차 주파수를 사용하여 일부 유전자를 매핑하는 프로그램을 구현해야 합니다 . 대부분 언어 쇼케이스이기 때문에 언어에있는 모든 종류의 표준 라이브러리 함수를 사용할 수 있습니다.
"유전자 매핑"이란 무엇입니까?
유전자 매핑은 염색체에서 유전자의 상대적 위치를 찾는 과정입니다. 이것은 유전자 쌍의 교차 주파수를 측정하여 이루어지며, 그 쌍이 함께 유전 되지 않는 자손의 백분율과 같습니다 . 거리는 교차하는 비율이 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,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
이것은 또한 완전히 엄격한 요구 사항이 아닙니다. 예를 들어 쉼표 나 공백과 같이 마침표 이외의 다른 것을 사용할 수 있습니다.
객관적인 승리 기준
객관적인 승리 기준은 다음과 같습니다. 각 언어는 가장 짧은 참가작을 작성할 수있는 사람에 대한 별도의 경쟁이지만 전체 우승자는 이러한 하위 경쟁을 가장 많이이기는 사람이됩니다. 이것은 많은 다른 언어로 대답하는 사람이 이점을 얻을 수 있음을 의미합니다. 코드 골프는 대부분 하나의 언어로 된 솔루션이있을 때 가장 큰 걸림돌입니다. 가장 짧은 프로그램을 가진 사람은 그 언어에 대한 학점을 얻습니다.
규칙, 제한 및 참고
귀하의 프로그램은 2013 년 12 월 20 일 이전에 존재했던 모든 언어로 작성 될 수 있습니다. 또한 테스트가 불가능하기 때문에 커뮤니티에 의존하여 좀 더 흔하지 않은 / 비언어적 언어로 작성된 일부 응답의 유효성을 검증해야합니다. 그들.
현재 리더 보드
이 섹션은 정기적으로 업데이트되어 언어의 수와 언어를 구사하는 사람을 보여줍니다.
- 오토 핫키 (632)-Avi
- 디제이 (579)-매직
현재 사용자 순위
- Avi (1) : 오토 핫키 (632)
- 루빅 (1) : dj (579)
n
는 않지만 주로 교차 주파수 (거리)에 대한 경계입니다. 항상 그렇지 않다고 가정 할 수 있습니까 1000
?