Напишите функцию, которая содержит пять строк.
Если вы запустите функцию как есть, она должна вернуть 0.
Если вы удалите одну из пяти строк и запустите функцию, она должна сообщить вам, какая из строк была удалена (например, если вы удалите последнюю строку, она должна вернуть 5).
Краткость, новизна и элегантность - все это заслуживает рассмотрения. Решение с наибольшим количеством голосов (после разумного количества времени) выигрывает.
popularity-contest
function
jawns317
источник
источник
Ответы:
Рубин
Избегать магических чисел, потому что это не код гольф.
Каждая строка убирает свой номер из
1^2^3^4^5
. Это Ruby, поэтому последняя строка определяет возвращаемое значение.источник
JavaScript (
13477696560 символов)→ живой демо ←
вызовите эту функцию с n = 10.
Предыдущие версии:
65 символов
(должен вызываться с n = 15)
69 символов
(должен вызываться с n = 15)
77 символов
134 символа
без golfed
источник
var a
послеreturn
? Теоретически это не должно быть достигнуто.питон
Если параметры разрешены, то это будет работать:
источник
р
Функция использует встроенные «константы» и присваивает другое значение каждому из них. Если все эти переменные равны новому значению, функция возвращает 0. Логические значения преобразуются в числовые из-за математических операторов. Скобки вокруг 4-й строки позволяют визуально вернуть результат (если это последняя команда).
источник
Lua 5.2+
55 символов в теле функции, исключая переводы строки. Я не мог придумать ничего лучшего, кроме этого:
Надеясь получить дополнительные баллы за злоупотребления комментариями: P
Причина, по которой он не работает в 5.1, заключается в том, что вложенные
[[]]
были удалены, а в 5.1 он выдает ошибку компиляции, а не игнорирует ее, как в 5.2.return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
источник
Рубин
Я попытался сделать это с побитовыми операциями, и затем я понял, что есть намного более простое решение, используя списки! Этот вызов лучше всего подходит для языка программирования, который автоматически возвращает последнее значение, которое он видит, например для Ruby.
источник
У Befunge нет явных функций, но вот что я бы назвал функцией в Befunge:
Первая и последняя строки - начало функции и конец функции. Он наиболее близок к «возврату», то есть помещает правильное значение в стек.
источник
Новый ответ
Я нашел другое решение. Это так плохо, мне очень понравилась математика. Это решение использует рекурсию и глобальные переменные (yuck!), Чтобы определить, была ли запущена каждая строка или нет. Я хотел сделать что-то отличное от других решений, так что это не очень элегантно, но работает правильно :)
PHP
Мне очень понравилось это испытание, спасибо! :)
Старый ответ
Я решил это с помощью математики. Если каждая переменная рассматривается как неизвестная, и мы делаем одно объявление на строку, есть пять неизвестных и пять строк кода: это приводит нас к следующей системе 5x5:
Как только я нашел значения, я жестко закодировал их и добавил некоторые базовые вещи.
PHP
Примечание . Старый ответ не будет работать, если оставить его как есть.
источник
пчелиный воск , 86 байт
Опробовать мой первый изобретенный esolang. После первоначальной путаницы я обнаружил, что решение очень простое.
Объяснение:
Программы на основе пчелиного воска работают на двумерной гексагональной сетке. Программы хранятся в прямоугольном формате.
хранится как
Инструкции для движения в определенных направлениях:
Краткое объяснение
_1 p
Создайте IP, добавьте 1, затем перенаправьте IP на строку 2_^v>~2+p
Создайте другой IP, на случай, если строка 1 отсутствует, замедлите IP, чтобы убедиться, что IP из первой строки впереди, затем добавьте 2, затем перенаправьте на строку 3> >~3+p
Добавьте 3, затем перенаправьте на строку 4> >~4+X@7~8+~@$^^{;
Добавьте 4, затем установите значение 2-го lstack равным 15, затем значения XOR lstack top и 2nd, замедлите IP (чтобы убедиться, что IP в строке 5 впереди, если строка 5 существует) и выведите результат, затем завершите программу.> >~5+@7~8+~@${;
Добавьте 5, затем сделайте то же самое, что и в строке 4, за исключением замедления.В основном программа просто рассчитывает сумму xor 15
Дополнительные
>
строки 3–5 просто гарантируют, что если одна из строк 2–4 пропущена, IP-адрес по-прежнему перенаправляется правильно и не покидает программу.Вы можете клонировать мой интерпретатор пчелиного воска, написанный на Джулии, из моего репозитория GitHub
Файл readme на GitHub более современный и лучше структурированный, чем страница esolangs.
источник
MuPAD, 57 символов
источник
Общий LISP:
NB. Заканчивать круглые скобки на отдельной строке считается плохим стилем, но поскольку другие языки имеют,
end
и}
я предполагаю, что это разрешеноисточник
Баш, 131 символ
До строки 5 все просто. Затем необходимо определить, не прошла ли последняя строка. Это использует преимущества разрешенных параметров функции, вызывая себя рекурсивно, один раз, чтобы проверить свое собственное значение успеха, когда ему говорят об ошибке в строке 5, и если строка 5 удаляется, строка 4 возвращается
5
вместо этого.(Примечание: минимальное количество символов - 131, если удалить все, кроме функции, пропустить пробелы и изменить / bin / bash на / bin / sh)
источник
Javascript
источник