В детстве моя сестра показала мне этот маленький расчет любви, чтобы увидеть, как много у вас шансов на успешные отношения с вашей любовью. Все, что вам нужно, это 2 имени и лист бумаги.
- Джон
- Джейн
Затем вы разделяете эти имена словом Любит . Вы можете написать это на одной строке или на новой строке.
Джон
любит
Джейн
Затем начинается расчет. Вы начинаете с подсчета того, сколько раз символ встречается слева направо, и в случае, если вы используете новые строки также сверху вниз. Каждый персонаж считается один раз, поэтому после подсчета J от Джона вам не нужно считать их снова, когда вы начинаете с Джейн. Результат этого примера будет следующим:
J: 2 ([J] он | [J] ан)
O: 2 (J [o] hn | L [o] ves)
H: 1 (Jo [h] n)
N: 2 (Joh [n] | Ja [n] e)
__L
: 1 ([L] oves)
O: пропущено
V: 1 (Lo [v] es)
E: 2 (Lov [e] s | Jan [e])
S: 1 (Love [s] ])
__
J: пропущено
A: 1 (J [a] ne)
N: пропущено
E: пропущено
__
Окончательный результат: 2 2 1 2 1 1 2 1 1
Следующим шагом будет добавление цифр, работающих снаружи, в середину.
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (1 + 2 = 3)
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (1)
__
Результат: 3 3 3 3 1
Вы будете продолжать делать это, пока у вас не останется целое число, меньшее или равное 100.
3 3 3 3 1
4 6 3
76%
Может случиться, что сумма из 2 цифр станет ≥ 10, в этом случае число будет разделено на 2 в следующей строке.
Пример:
5 3 1 2 5 4 1 8
13 (будет использоваться как 1 3)
1 3 4 5 7
8 8 4 (8 + 4 = 12 используется как 1 2)
1 2 8
92%
Требования
- Ваша программа должна быть способна принимать любое имя разумной длины (100 символов)
- [A..Z, a..z] символы разрешены.
- Регистр нечувствителен, поэтому A == a
Вам решать
- Как обрабатывать специальные символы (Ö, è и т. Д.)
- Включите фамилии да или нет, пробелы будут игнорироваться
- Разрешен любой язык.
Победитель будет определен путем голосования 28-14 февраля.
Удачного кодирования
Ps Это первый раз, когда я что-то здесь выкладываю, если есть какой-то способ улучшить это, не стесняйтесь, дайте мне знать = 3
Изменить: Дата окончания изменилась на день Святого Валентина, думал, что будет более подходящим для этого вызова :)
источник
1-love_result
:-)Ответы:
Sclipting
Ожидает ввод в виде двух слов, разделенных пробелом (например
John Jane
). Он нечувствителен к регистру, но поддерживает только символы, которые не являются специальными символами регулярных выражений (поэтому не используйте(
ни*
в своем имени!). Он также ожидает только два слова, поэтому, если ваш любовный интерес - «Мэри Джейн», вы должны вставитьMaryJane
одно слово; в противном случае он будет оценивать «Ваше имя любит Мэри любит Джейн».объяснение
Сложнее всего было обработать случай нечетного числа цифр: вы должны оставить среднюю цифру в одиночестве, а не добавлять ее вместе с собой. Я думаю, что мое решение интересно.
Когда у вас останется что-то ≤ 100, цикл просто закончится, ответ будет в стеке и, следовательно, выводится.
источник
改
(без учета регистра строки) в ответ на этот вызов, но здесь я не собираюсь его использовать.Funciton
Эта программа ожидает ввода, разделенного пробелом (например
John Jane
). Он не чувствителен к регистру символов AZ / az; для любого другого символа Unicode он «перепутает» два символа, которые равны, когда or'ed с 32 (например,Ā
иĠ
, или?
и и_
). Кроме того, я понятия не имею, что будет делать эта программа, если ввод содержит символ NUL (\0
), поэтому не используйте это :)Кроме того, поскольку StackExchange добавляет слишком много межстрочного интервала, здесь приведен необработанный текст на pastebin . Или запустите следующий код в консоли JavaScript вашего браузера, чтобы исправить это прямо здесь:
$('pre').css('line-height',1)
Быстрое объяснение
Программа просто берет STDIN и звонит
Ḷ
вместе с ним.Ḷ
находит первый пробел в строке, заменяет его наloves
и передает результатỌ
.Ọ
многократно берет первый символ из входной строки, вызываетṢ
его и объединяет числа вхождений в результирующую строку. Когда входная строка пуста, она вызываетṾ
строку результата.Ṿ
несколько раз вызываетẸ
до тех пор, пока не получит результат, который будет равен"100"
или имеет длину меньше 3. (100
может на самом деле произойти: рассмотрите вводlovvvv eeeeeess
.) Когда это происходит, он добавляет"%"
и возвращает это.Ẹ
вычисляет одну полную итерацию алгоритма вычисления любви; т.е. он принимает строку цифр и возвращает следующую строку цифр.Ṛ
берет стог сена и иголку и находит индекс первого появления иголки в стоге сена, используя критерий нечувствительности к регистру (or 32
).Ṣ
берет стог сена и иголку и неоднократно применяетṚ
для удаления всех экземпляров иголки . Он возвращает окончательный результат после всех удалений, а также количество выполненных удалений.источник
Рубин
Печатает сердце, если вероятность отношения превышает 50%
И печатает разбитое сердце, если шансы ниже 50% :(
Чертов Джон ...
В любом случае, он нечувствителен к регистру и поддерживает полигамные запросы (например
ruby ♥.rb Alice Bob Carol Dave
).источник
APL, 80
Потому что
любовь есть любовькод-гольф - это код-гольф (даже когда это не так)Обязательный ♥ ︎-образный вариант:
Гольф версия дает мне несколько странное поведение, из-за ошибки с
∪⍦
которой я исследую разработчиков NARS:Но я смог запустить его по частям и получить правильный результат:
источник
Javascript
Возможно, может быть чище, но это работает. Подробный пример
источник
питон
Ну, я думал, что это был код-гольф ...
Ungolfed:
источник
reduce(list.__add__,xyz)
наsum(xyz,[])
. :)PHP
результат выборки
источник
GolfScript
Обязательный код гольф-ответа в GolfScript:
Принимает ввод как разделенные пробелами имена, например
источник
C #
источник
q[i] + q[j]
10 или больше?Haskell
Моя версия довольно длинная, потому что я решил сосредоточиться на удобочитаемости, и я подумал, что было бы интересно формализовать ваш алгоритм в коде. Я собираю количество символов в левом сгибе , они в основном превращаются в снежные комки, и порядок их расположения в последовательности совпадает. Мне также удалось заменить часть алгоритма, которая обычно требовала индексации массива, изгибом списка . Оказывается, ваш алгоритм в основном включает в себя сложение списка чисел пополам и сложение выровненных чисел вместе. Есть два случая изгиба, четные списки хорошо разделены по центру, нечетные списки огибают центральный элемент, и этот элемент не участвует дополнительно. Деление берет список и разбивает числа, которые больше не являются однозначными, как> = 10 . Мне пришлось написать свою собственную раскладку , я не уверен, действительно ли это раскрутка , но, кажется, она делает то, что мне нужно. Наслаждаться.
Некоторые результаты:
"Ромео" "Джульетта" 97% - важно эмпирическое тестирование
"Ромео" "Джульер" 88% - Современная сокращенная версия ...
"Хорст Дрейпер" "Джейн" 20%
"Хорст Дрейпер" "Джейн (Лошадь)" 70% - Там было развитие ...
"Бендер Бендер Родригес" "Фенни Венчворт" 41% - Бендер говорит "Складывание для женщин!"
"Филип Фрай" "Туранга Лила" 53% - ну, вы можете понять, почему им потребовалось 7 сезонов, чтобы жениться на
"Марии", "Аврааме" - 98%,
"Иоанне", "Джейн", 76%
источник
Рубин
уменьшенная:
Назови это:
источник
l=->a{...}
вместоl=lambda do|a|...end
, и вы могли бы также сделатьl[...]
вместоl.call(...)
.Python 3
Простое решение, которое не использует никаких модулей. Ввод / вывод достаточно хорош.
Я использовал перехват ошибок в качестве резервной копии, когда второй итератор вышел за пределы; если он ловит ошибку индексации Python, он принимает значение 1. Странно, но это работает.
Вот пример прогона:
источник
for
наnames
непосредственно?25211111111.363221.485.98
. я думаю, что ваш код не может добавить 5 "а"Джава
Что делать, если число равно 10? Я только добавил 1 и 0, это правильно?
Я решил проигнорировать дело.
вход:
выход:
вход:
выход:
источник
С
Там может быть много улучшений, но это было весело для кода.
И конечно же, обязательная версия для игры в гольф: 496
источник
Python 3
Это займет два имени в качестве ввода. убрать лишние пробелы и затем вычислить любовь. Проверьте входной выход для более подробной информации.
вход:
выход:
Или попробуйте это;)
вход:
выход:
источник
к, 80
Вот пример этого:
источник
J
Вот простой в J:
Он принимает имена в командной строке, например:
источник
Groovy
Вот отличная версия, с тестами.
Объяснение:
CodeGolf Groovy, 213 символов
Видя, что это codegolf, мы можем встроить замыкания и объяснить это:
сохранить как lovecalc.groovy. запустить "заводной lovecalc Джон Джейн"
Выход:
источник
Джава
Это берет 2 параметра String при запуске и распечатывает счет каждого символа и результат.
Конечно, не самый короткий (это Java), но понятный и читаемый.
Так что если вы позвоните
вы получаете выход
источник
р
Не собираюсь выигрывать награды за компактность, но я все равно повеселился:
Проверено: действительно для «Джон» и «Джейн» и «Ромео» и «Джульетта». за мой комментарий под вопросом,
источник