Ваша задача - создать программу, которая делает следующее:
- Вы должны взять номер. (Положительный, отрицательный, возможен ввод дроби)
- Если оно отрицательное, вы меняете квинну. и отрицать это число (стать положительным)
- Затем вы повторяете <целую часть входного числа> и печатаете сначала <пол (дробная часть входного числа * длина)> из исходной программы. Если это целое число, то дробная часть равна нулю.
Бонус -10%, если ваша программа не палиндром.
пример
Если ваша программа "ABCDEFG", то
1.
5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFG
объяснение
ABCDEFG пять раз
2.
-2
GFEDCBAGFEDCBA
объяснение
GFEDCBA (в обратном порядке ABCDEFG) 2 раза
3.
7.5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABC
объяснение
ABCDEFG 7 раз, за которыми следует ABC (первые 3 (пол (0,5 * 7) = пол (3,5) = 3) буквы на ABCDEFG)
4.
-0.3
GF
объяснение
GFEDCBA (обратный ABCDEFG) 0 раз, за которым следует GF (первые 2 (пол (0,3 * 7) = нижний (2,1) = 2) буквы на GFEDCBA (обратный ABCDEFG))
5.
0
<empty>
Объяснение:
<пустой> здесь означает, что ваша программа не выводит. Это ABCDEFG ноль раз, который определяется как пустая строка.
-
и.
вручную (представляя дробь в виде натуральных чисел). Или вы можете обратить свое внимание на следующий вызов. ;) (Не каждый язык может участвовать в каждой задаче, но если задача намеренно не исключает произвольные отдельные языки, это вполне нормально. Просто подумайте обо всех проблемах обработки аудио / изображений или файловой системы.)Ответы:
CJam,
2826 байтов * 0,9 = 23,4Спасибо Sp3000 за сохранение 2 байта.
Проверьте это здесь.
объяснение
источник
Витси, 34 * 0,9 = 30,6 Байт
Спасибо @ Sp3000 за указание на недостаток в моем коде!
Woo. Мой учитель физики напомнил мне, что у меня есть силовые функции, чтобы помочь мне с этим. Пойди разберись.
источник
Perl, 104 байта - 10% = 93,6
102 байта + 2 байта за
-i
- 10% за отсутствие палиндрома. Ввод передается в качестве аргумента-i
(например,-0.3
выше).Как это устроено
Это решение основано на следующей сущности:
Это работает следующим образом. Сначала установите
$_
строку:Далее вызов
eval
, который работает$_
по умолчанию. Это вызываетprint
с одним аргументом, строковым литералом:Поскольку эта строка в двойных кавычках, переменные интерполируются. После интерполяции
$_
значение строки:При печати это выводит:
который является исходным кодом самой программы.
Хорошая вещь в этом quine заключается в том, что вы можете встроить произвольный код в строку
eval
'd.Вот разбивка полного решения:
источник
Mathematica, 139 - 10% = 125,1 байта
Обратите внимание на завершающий пробел. Пробелы, стандартные обозначения и т. Д. Являются результатом
ToString[#0, InputForm]
.источник
Haskell, 158 * 0,9 = 142,2 байта
Функция Квина.
источник
Python 2, 193 байта - 10% = 173,7
Ошибки включены
0
, но, игнорируя STDERR, вы все равно получаете пустой вывод.источник