Создайте программу, которая подсчитывает общее количество букв, общих для двух имен, и находит произведение их длины, чтобы функционировать как «тестер любви».
Условия: вы не можете получить ответ 1: 1 (3 из 3 и т. Д.).
вход
Два имени из STDIN или ближайшей альтернативы.
Вывод
Вычислить x
как общее количество букв, общих между двумя именами, игнорируя регистр. Вычислить y
как произведение длин имен. Тогда вывод на STDOUT или ближайшую альтернативу
Name1 and Name2 have x out of y chances of love.
Примеры
Входные данные:
Wesley
Polly
Вывод:
Wesley and Polly have 2 out of 30 chances of love.
Уэсли и попка есть 2 буквы в общем, y
и l
, а произведение их длин равна 6 * 5 = 30.
Входные данные:
Bill
Jill
Вывод:
Bill and Jill have 3 out of 16 chances of love.
Бонусы
- Вычтите 30 байт для использования упрощенных дробей, т.е.
x out of y
в полностью приведенном виде.
Leaderboard:
Рейтинг будет определяться языками. Кодовый гольф заканчивается 17 октября в 22:20 по тихоокеанскому летнему времени (Калифорния)
Реп Призы
- Вы получите 10 повторений (повышение) за попадание в топ-5 (кроме первого места).
- За первое место вы получите 15 повторений (принятая запись).
- Вы также можете получить вознаграждение от другого человека.
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам. **
Чтобы убедиться, что ваш ответ отображается, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
** Фрагмент стека от Подписи этого слова от Kslkgh
Поздравляю со следующим:
- Победитель Деннис (Пиф)
- Деннис (CJam)
- НБЗ (APL)
- молярный (JavaScript ES6)
- Алекс А. (Юлия)
Aaron\nAhmad
? Илиsamename\nsamename
?a
иb
какие-то буквы, учитываются ли этиmin(a,b)
повторения?Ответы:
Pyth, 40 байт
Код длиной 70 байт соответствует бонусу -30 байт .
Попробуйте онлайн.
источник
Dyalog APL ,
9491-30 = 61 байтОбычно игра в гольф APL приводит к тому, что код становится более компактным, но не более сложным, чем обычно, но в этом случае я сохраняю символы ужасными способами:
,⍪'out of' 'chances of'
создайте таблицу чисел 2 × 2 (слева) и текст (справа):×/≢¨⍵
произведение длин32|⎕UCS¨⍵
гармонизирует верхний и нижний регистры значений UCS,≢⊃∩/
пересечение двух наборов⊢÷∨/
делит счет, а произведение с их GCD,' love.',⍨∊
превращает его в простой список и добавляет любовь.⍵,⍪'and' 'have'
создать таблицу имен 2 × 2 (слева) и тексты (справа),∊' ',¨
добавив пробел к каждой ячейке таблицы, а затем превратить в простой список1↓
исходный лишний пробелСпасибо ngn за -3 байта.
источник
'Wesley' 'Polly'
. Если вы считаете, что это будет более справедливо, не стесняйтесь добавлять⎕
(U + 2395) к самому концу строки (после}
) и скорректируйте счет до 65.Javascript ES6, 123 байта
Так много для "любви" ... Я действительно мог бы сделать с меньшим количеством байтов.
Запустите фрагмент кода в Firefox.
Показать фрагмент кода
источник
Юлия, 129 байт
Код составляет 159 байт, но он соответствует бонусу -30.
Вероятно, это можно было бы сделать короче, если бы не получить бонус, но я хотел показать рациональный тип чисел Джулии. :)
Ungolfed:
Rational()
Функция создает объект типа ,Rational
который имеет полеnum
иden
, соответствующий числитель и знаменатель соответственно. Преимущество использования этого типа здесь в том, что Джулия делает сокращение для нас; нам не нужно беспокоиться о сокращении доли сами.источник
CJam, 55 байтов
Код длиной 85 байт соответствует бонусу -30 байт .
Попробуйте онлайн в интерпретаторе CJam .
Как это работает
источник
Dyalog APL, 84-30 = 54 байта
∊' and ' ' have' 'out of' 'chances of love.',¨⍨⊢,{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}(,÷∨)(×/≢¨)
Это поезд , вдохновленный ответом Адама .
×/≢¨
произведение длин{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}
шансы на любовь(,÷v)
конкатенация, разделенная на GCD; между двумя вышеупомянутыми выражениями это уменьшает долю⊢,
добавлять имена,¨⍨
перемешивает строки слева со значениями справа∊
расплющитьВычисление «Шансов любви» подробно:
{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵} ↑⍵ arrange the names in a 2×N matrix, pad with spaces ⎕ucs take ascii codes ⍉ transpose the matrix as N×2 32| modulo 32 to case-fold 1↑¨⍨- for each X create a vector 0 0...0 1 of length X ↑ arrange into a 3d array, pad with 0s +⌿ 1st axis sum, obtain freqs per letter and per name ⌊⌿ 1st axis min, obt. nr of common occurrences per letter +/ sum
тест , тест2
источник
Java 8, 192 байта
Пример:
источник
Рубин, 153 байта
Дольше, чем я ожидал. Я не знаю, применяется ли 30-байтовый бонус для этого.
источник
Python 2,7, 161 байт
Проверьте это здесь: http://ideone.com/jeoVgV
И вот версия, которая упрощает дробь:
К сожалению, этот счет 219-30 = 189 ...
источник