У вас есть поле с одной цифрой в каждом углу:
1|2
---
3|4
Если мы соединяем цифры по строкам слева направо, мы получаем 12 и 34. Если мы соединяем цифры по столбцам сверху вниз, мы получаем 13 и 24. Если мы добавим все эти числа, мы получим 12 + 34 + 13 + 24 = 83
Вызов
Напишите программу для печати всех таких полей, где сумма, рассчитанная, как указано выше, равна 100.
Предполагая, что каждый угол содержит однозначное число от 1 до 9, существует 9 комбинаций: 1157, 1247, 1337, 1427, 1517, 2138, 2228, 2318 и 3119. (Обратите внимание, что есть 25 комбинаций, если мы включаем 0, но мы не для этого вызова.)
Обратите внимание, что пример 1234 не работает, так как 12 + 34 + 13 + 24 не равен 100.
вход
Никто
Выход
Ящики для ответов в следующем формате:
A|B
---
C|D
Вывод должен быть распечатан на STDOUT или ближайшую альтернативу.
правила
- AB + CD + AC + BD = 100
- Каждый угол будет содержать только положительные целые числа 1-9.
- 0 исключено.
- Числа могут быть использованы более одного раза.
- Вам нужно нарисовать коробки, как указано выше. (
A|B\n---\nC|D\n
) - Вам необходимо вывести все правильные ответы.
- Дополнительный трейлинг-перевод строки хорош.
- code-golf , поэтому выигрывает самый короткий код в байтах.
- Стандартные лазейки и T & C применяются.
Это мое первое представление, поэтому, пожалуйста, дайте мне знать, если мне нужно что-то уточнить.
Ответы:
Pyth,
423834 байтаКонечный символ новой строки в коде важен. Основная причина моей конкурентоспособности заключается в том, что я использую векторное произведение точек
[1, 1, 5, 7]
и[20, 11, 11, 2]
сравниваю его со 100.источник
"|"
->\|
,\n
-> (буквальный перевод строки) и вам не нужна заключительная цитата.Руби, 71
Поскольку жесткое кодирование не запрещено (и в любом случае трудно провести черту), вот частичный жестко закодированный ответ.
объяснение
Формула для решения выглядит следующим образом:
По модульным арифметическим рассуждениям мы видим, что A и D должны различаться на постоянную величину, такую, которая
(A*20+D*2)%11
является постоянной. На самом деле D = A + 6. Вi
итерации цикла через три возможных значений А.Значение B может быть любым от 1 до,
7-i*2
и общее количество B и C должно быть14-A-D
. Таким образом мы получаем следующие выражения, которые печатаются. Ruby позволяет буквально переводить строки в строки, заключенные в''
источник
Ява,
202200198Пытаюсь впервые: D
РЕДАКТИРОВАТЬ: сохранено 2 байта с немного меньшим вычислением, найденным в другом комментарии.
источник
Пакет - 187 байт
Грубая сила.
Без гольфа это немного менее отвратительно:
источник
CJam, 40 байтов
Подход к поиску комбинаций отличается от подхода @ Optimizer, но код для их печати идентичен.
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Haskell,
107131 байтВторая версия моей первой программы на Haskell!
На этот раз с отображением в соответствии с требованиями, бесстыдно
украденным,адаптированным из nimi (я провел небольшое исследование, но, похоже, не существует эффективных способов отображения символов в Haskell, так что сложное использование stStr $ unlines трудно избежать).И ... кроме факторизации формулы в конце, она все еще читаема =)
источник
Haskell,
125121 байтИспользование:
>>
в"abcd">>[[1..9]]
составляет список с 4 (длина 1 - го параметра) копий второго элемента, то есть[[1..9],[1..9],[1..9],[1..9]]
.mapM id
составляет список всех их комбинаций, т.е.[0,0,0,0]
к[9,9,9,9]
. Оставьте те, которые суммируют,100
и постройте строку из коробки. Распечатать все коробки.Спасибо @Mauris за 1 байт и заставил меня просмотреть мой пост, чтобы найти еще 3.
источник
mapM id
сохраняет байт противsequence
.Python 2,
145129 байтВ настоящее время я играю с несколькими различными методами расчета, которые должны быть короче, чем указано, но я опубликую то, что имею сейчас.
источник
CJam,
4342 байтаОбъяснение следовать .. сегодня EOD
Попробуйте онлайн здесь
источник
Питон 3, 159
Быстро и грязно.
источник
R 165 байт
Это было бы значительно короче, если бы я решил каким-то образом жестко закодировать вывод. Как и в некоторых других решениях, здесь используется тождество 20 x 1 + 11 ( x 2 + x 3 ) + 2 x 4 = 100.
Ungolfed + объяснение:
Вы можете быть удивлены, почему последнее утверждение является заданием. Оказывается,
cat
функция, которая объединяет и печатает, возвращает значениеNULL
. Когда вы вызываетеcat
из функции вродеapply
, за выводом последуетNULL
, что нежелательно. Есть два способа обойти это: назначить переменную или обернуть ееinvisible
. Здесь я выбрал первый, так как он значительно короче.Вы можете попробовать это онлайн .
источник
Ява, 450
Моя первая попытка выглядела так:
источник
20*a + 11*(b + c) + 2*d == 100
.PowerShell, 98
адаптированная формула Steveverrill
источник