Вызов
В этой задаче вы должны написать программу, которая будет вводить целое число N (-1e9 <= N <0 && 0 <N <= + 1e9) , а затем вычислять T = (abs (N)% M + 1) , если N положительно, затем выведите T-й символ с начала, иначе выведите T-й символ с конца вашего источника.
M - размер вашего источника в байтах.
Пример: если ваш источник:abcd efg/hi
Входные данные:
2
Выход:
c
Вход :
-3
Выход:
g
Вход :
-9249678
Выход:
b
Вход :
-11
Выход:
i
Ограничения
- Не используйте операцию FILE
- Вы можете использовать любой язык на ваш выбор
- Старайтесь избегать или, вернее, не использовать 1-байтовые представления, так как это портит все удовольствие.
- Самое короткое решение побеждает!
РЕДАКТИРОВАТЬ: формулировка проблемы была изменена таким образом, чтобы решения могли оцениваться с использованием случайных тестовых данных (и одинаковых данных для всех решений), поэтому, пожалуйста, обновите свое решение соответствующим образом, извините за неудобства (если таковые имеются).
-2 -> /
-1 -> h
0 -> i
1 -> b
2 -> c
. Но, по крайней мере, теперь карта единодушна.&&
в первом предложении должно быть||
?Ответы:
Сборка x86 (32-битный Linux, AT & T синтаксис): 548
Нет новой строки в конце файла:
Я скомпилировал это с
gcc -nostartfiles -m32 qc1.S -o qc1
Проверка, положительные числа:
Проверка, отрицательные числа:
Edit получил это право о странной схеме нумерации. Я думаю. Это не изменило длину.
источник
Что бы вы знали, HQ9 + возвращается!
Не нужно беспокоиться об индексации, когда есть только один символ на выбор!
источник
echo '-1' | hq9+ qc1
Ruby 1.9, 66 символов
На самом деле, нет особой разницы с обычной мукой.
источник
GolfScript 26 символов
Квины были веселее до изобретения динамических языков.
Изменить: для нытиков, вот "настоящая" quine GolfScript, без `и ~ используется только для анализа ввода.
Инвалиды GolfScript 44 символа
Обратите внимание, как хорошо это одна и та же строка, повторяемая дважды, поэтому строковый литерал нужно просто
'
взломать перед ним, и он готов к использованию.источник
Quines were more fun before the invention of dynamic languages.
:-)Lenguage, 4 байта
Исходный код состоит из 4 нулевых байтов. Независимо от ввода, вывод должен, таким образом, быть нулевым байтом, который выполняется одной
.
инструкцией.источник
Smalltalk,
94 90 5952например, в классе Object скомпилируйте:
затем отправьте q: <n> любому объекту; здесь целое число:
проверка:
1 q: 0 -> q
1 q: 1 ->:
1 q: 2 -> n
...
1 q: -1 ->)
1 q: -2 ->)
1 q: -3 -> 1
или лучше:
(от 0 до: 100) собрать: [: n | 1 q: n] as: String
->
')q:n|s m|s:=thisContext method source.m:=s size.^s at:(n>=0ifTrue:n-1\\m+1ifFalse:m-(0-n\\m))q:n|s m|'
(-1 downTo: -500) собирать: [: n | 1 q: n] as: String
->
')m\\n-0(-m:eslaFfi1+m\\1-n:eurTfi0=>n(:ta s^.ezis s=:m.ecruos dohtem txetnoCsiht=:s|m s|n:q))m\\n-0('
объяснение не-Smalltalkers:
thisContext - текущий фрейм стека, который может быть запрошен для его метода , который может быть запрошен для его источника .
источник
Рунические чары , 17 байт
Попробуйте онлайн!
Просто использует стандартный quine для генерации программной строки, а затем использует строковый оператор по модулю 1, чтобы получить символ с заданным индексом (который изначально поддерживает отрицательные и положительные знаки, поведение под влиянием Python).
,
«делить» разрезает строку на куски (достаточно логично, чтобы не*
дублировать времена строкиx
),+
объединяет и-
удаляетx
символы с конца (достаточно логично, что инверсия+
). Таким образом,%
команда играет рольcharAt(x)
: единственной оставшейся базовой строковой операции (после того, как стекоподобные операции обрабатываются теми же командами, которые работают со стеком; например,l
это размер стека, аl͍
также длина строки).источник
JavaScript (ES6), 28 байт
Модифицированная квинна.
Значение больше 28 обрабатывается
%28
, значение меньше 0 обрабатывается.substr()
.источник