Целью Rosetta Stone Challenge является написание решений на максимально возможном количестве языков. Покажите свое программирование многоязычия!
Соревнование
Ваша задача состоит в том, чтобы реализовать программу, которая отобразит некоторые гены с использованием перекрестных частот на максимально возможном количестве языков программирования . Вам разрешается использовать любую стандартную библиотечную функцию, имеющуюся в вашем языке, поскольку это в основном демонстрация языка.
Что такое "картирование генов"?
Картирование генов - это процесс определения местоположения генов на хромосомах. Это делается путем измерения частоты скрещивания пар генов, равной проценту потомства, в котором эта пара не наследуется вместе. Расстояние измеряется в единицах карты, причем одна единица карты равна одному проценту пересечения. Например, если гены C & D имеют частоту кроссовера 11%, то ген C находится на расстоянии 11 единиц карты от гена D.
Картирование генов выполняется с несколькими парами генов, чтобы определить их относительный порядок. Например, данные (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
Это также не является абсолютно жестким требованием. Например, вы можете использовать что-то, кроме точек, например запятые или пробелы.
Объективный критерий победы
Что касается объективного критерия выигрыша, то вот он: каждый язык - это отдельное соревнование в отношении того, кто может написать самую короткую запись, но общим победителем будет тот, кто выиграет большинство из этих субконкурсов. Это означает, что человек, который отвечает на многих необычных языках, может получить преимущество. Code-golf - это, в основном, тай-брейк, когда на языке существует более одного решения: человек с самой короткой программой получает кредит на этот язык.
Правила, ограничения и примечания
Ваша программа может быть написана на любом языке, существовавшем до 20 декабря 2013 года. Мне также придется полагаться на сообщество, чтобы проверить некоторые ответы, написанные на некоторых из более необычных / эзотерических языков, так как я вряд ли смогу протестировать их.
Текущий список лидеров
Этот раздел будет периодически обновляться, чтобы показать количество языков и лидирующих в каждом.
- AutoHotkey (632) - Ави
- DJ (579) - Рубик
Рейтинг текущих пользователей
- Ави (1): AutoHotkey (632)
- Рубик (1): DJ (579)
источник
n
, но прежде всего границы для пересечения частоты (расстояния). Можем ли мы предположить, что это будет, скажем, меньше1000
?Ответы:
AutoHotkey (632)
Код можно укоротить, переименовав все переменные в 1 символ. Затем он должен быть около 610 символов.
Тестовые случаи
источник
Python 311
Мой первый код-гольф: D
(Я не уверен с подсчетом, я просто постить его онлайн в подсчете символов)
Идея алгоритма довольно плохая, но она короткая. Попробуйте случайным образом все позиции символов, пока они не удовлетворят всем ограничениям. Например, ввод с пробелами
Нажмите после этого CTRL + D в консоли, чтобы закончить чтение.
Вот оригинальный код, который все еще использует ',' в качестве разделителя.
источник
дг -
717579 байтПитон один входит.
Примеры:
источник
источник