Celem Stone Rosetta Challenge jest pisanie rozwiązań w jak największej liczbie języków. Pochwal się swoją wielojęzycznością programistyczną!
Wyzwanie
Twoim wyzwaniem jest wdrożenie programu, który zmapuje niektóre geny za pomocą częstotliwości rozgraniczających, w jak największej liczbie języków programowania . Możesz używać dowolnej standardowej funkcji bibliotecznej, którą posiada Twój język, ponieważ jest to głównie prezentacja języka.
Co to jest „mapowanie genów”?
Mapowanie genów to proces lokalizowania względnej pozycji genów na chromosomach. Odbywa się to poprzez pomiar częstotliwości krzyżowania par genów, równej procentowi potomstwa, w którym ta para nie jest dziedziczona razem. Odległość jest mierzona w jednostkach mapy z jedną jednostką mapy równą jednemu procentowi przekroczenia. Na przykład, jeśli geny C i D mają częstotliwość krzyżowania wynoszącą 11%, wówczas gen C znajduje się w odległości 11 jednostek mapy od genu D.
Mapowanie genów przeprowadza się przy użyciu wielu par genów w celu ustalenia ich względnej kolejności. Na przykład dane (A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)
tworzą następującą mapę:
A..H.D......B
Być może zauważyłeś, że B......D.H..A
jest to również ważna mapa. To prawda, ponieważ nie można odróżnić lustrzanych przeciwieństw. Twój program może wybrać, który z nich wydrukować. Chociaż dane wejściowe mogą nie obejmować każdej możliwej pary, zawsze będzie wystarczająca ilość informacji, aby zrekonstruować całą mapę (więc nigdy nie będzie więcej niż 2 prawidłowe dane wyjściowe). Ponadto liczby zawsze będą się sprawdzać (w przeciwieństwie do faktycznej biologii), co oznacza, że nie będziesz mieć takich rzeczy (A,B,3) (B,C,4) (A,C,13)
.
Wejście
Wprowadzanie rozpocznie się od liczby, n
po której nastąpi lista genów (wielkie litery). Będą wtedy n
trojaczki danych. Każdy zestaw będzie się składał z pary genów i ich krzyżowania na częstotliwości (odległości).
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
Dane wejściowe nie są sztywno zdefiniowane, ponieważ różne języki mogą mieć ograniczenia co do wykonalności. Na przykład możesz zmienić separatory na coś innego niż przecinki i znaki nowej linii. Formatowanie danych wejściowych zależy w dużej mierze od Ciebie.
Wynik
Wyjście będzie interpretacją mapy genów. Będzie się składał z genów (wielkich liter) rozmieszczonych w odstępach tak, aby odległości były dokładnie przedstawione. Oto wyniki dla powyższych przykładów.
P..HI *or* IH..P
BG..Q.....A...U *or* U...A.....Q..GB
To również nie jest całkowicie sztywny wymóg. Na przykład możesz użyć czegoś innego niż kropki, takiego jak przecinki lub spacje.
Kryterium zwycięskiego celu
Jeśli chodzi o obiektywne kryterium wygranej, oto on: Każdy język to osobny konkurs na to, kto może napisać najkrótszą pracę, ale ogólnym zwycięzcą byłaby osoba, która wygra najwięcej z tych pod-konkursów. Oznacza to, że osoba, która odpowiada w wielu nietypowych językach, może zyskać przewagę. Code-golf jest przeważnie rozstrzygający, gdy istnieje więcej niż jedno rozwiązanie w języku: osoba z najkrótszym programem otrzymuje kredyt za ten język.
Reguły, ograniczenia i uwagi
Twój program może być napisany w dowolnym języku, który istniał przed 20 grudnia 2013 r. Będę też musiał polegać na społeczności, aby zweryfikować niektóre odpowiedzi napisane w niektórych bardziej rzadkich / ezoterycznych językach, ponieważ jest mało prawdopodobne, że będę w stanie przetestować im.
Aktualny ranking
Ta sekcja będzie okresowo aktualizowana, aby pokazać liczbę języków i kto prowadzi w każdym z nich.
- AutoHotkey (632) - Avi
- dj (579) - rubik
Aktualne rankingi użytkowników
- Avi (1): AutoHotkey (632)
- rubik (1): dj (579)
źródło
n
, ale przede wszystkim granice przekroczenia częstotliwości (odległości). Czy możemy założyć, że zawsze będzie to, powiedzmy, mniej niż1000
?Odpowiedzi:
AutoHotkey (632)
Kod można skrócić, zmieniając nazwę wszystkich zmiennych na 1 znak. Powinno to wynosić około 610 znaków.
Przypadki testowe
źródło
Python 311
Mój pierwszy golf-golf: D
(Nie jestem pewien co do liczenia, po prostu umieszczam go online w liczbie znaków)
Idea algorytmu jest dość zła, ale jest krótka. Wypróbuj losowo wszystkie pozycje symboli, dopóki nie spełnią wszystkich ograniczeń. Na przykład wejście zawiera spacje
Naciśnij po tym CTRL + D w konsoli, aby zakończyć czytanie.
Oto oryginalny kod, który nadal używa „,” jako separatora.
źródło
dg -
717579 bajtówNadchodzi Python.
Przykłady:
źródło
źródło