При наличии цифры от 0 до 9 (включительно) ваша функция / подпрограмма должна печатать все числа от -100 до 100 (включительно), которые содержат данную цифру.
Например:
Input: 9
Output: -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -79 -69 -59 -49 -39 -29 -19 -9 9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99
Правила:
- Вы не можете использовать строки (какими бы они ни были представлены на выбранном вами языке) или массивы символов. (За исключением печати ответа на консоль.)
- Вы не можете использовать массивы.
Подсчет очков:
Оценка = длина подпрограммы / функции (пробелы не учитываются)
Ответ с самым низким счетом выигрывает.
Пробелы НЕ будут засчитаны. Пожалуйста, отформатируйте ваш код правильно!
В некоторых ответах используются регулярные выражения, которые могут нарушать правило без строк, на что указывают некоторые члены. Эти ответы не будут приняты.
Пожалуйста, проверьте ваш код 0
перед публикацией.
Ответы:
Пробел, 834 символа (0, если вычесть пробелы)
Использовал этот интерпретатор для проверки.
Это заняло у меня около 4 часов тяжелой работы и ужасной отладки. Но это сделано!
РЕДАКТИРОВАТЬ : Выбираемый текст предоставляется с трюками HTML. Если вы копируете и вставляете его отсюда в другое место, проверьте, точно ли вы получили
[space][tab][linefeed][linefeed][linefeed]
в конце 100 или 101 строку (в зависимости от того, считает ли ваш редактор новую строку или нет, если последняя заканчивается переводом строки).В случае, если вы не можете использовать его таким образом, рассматривая пробел как
S
, перевод строки какL
и табуляцию какT
, и разрыв строки послеL
, вот оно:источник
Баш + утиль - 20
Или 21 байт, если в скрипте
Чтобы запустить скрипт:
источник
grep
неbash
илиsh
. Это еще одна утилита!JavaScript 133 - 1 = 132
Конечно, теперь не может быть ничего плохого в этой версии ...?
источник
for(i=-100,r=prompt();101>i;i++)(i+'').match(r)&&console.log(i)
.alert(RegExp(9).test(99))
который основан только на числах, также возвращаетсяtrue
из-за свободно основанной системы ввода текста в JavaScript. Функции работают с числами, как будто они являются строками, но все еще числами ... Если вы измените код для чтенияr=RegExp(x=+prompt());for(i=-100;101>i;i++)r.test(i)&&console.log(i);console.log(typeof(x));console.log(typeof(i))
и выполнения, будет показан окончательный ответ typeofx
и вi
виде чисел ... Ergo, я не использую строки ...GolfScript [24 байта]
Описание:
ДЕМО: http://golfscript.apphb.com/?c=MwoKYDp4OzIwMSx7MTAwLX0le2B4Py0xPn0sYA%3D%3D
источник
Рубин: 92 персонажа
Читаемая версия:
Образец прогона:
Тестовый забег:
источник
0
тест.К - 45 символов
Не выигрывая никаких наград, но К гольфу недостаточно представлен. K не становится красивее с надлежащим интервалом, поэтому я просто оставлю это как есть, потому что K очень разборчив в том, какой пробел важен, а какой нет.
Разъяснение:
a:100-!201
- Составьте список от 0 до 200 включительно, затем вычтите его из 100. Теперь у нас есть числа от -100 до 100 включительно, но в обратном направлении от спецификаций вопроса. Мы всегда можем исправить это позже, поэтому сейчас мы просто назначим этоa
._ _abs
- Возьмите слово абсолютных значений этих чисел, потому что по какой-то причине К считает, что_abs
должно дать результаты с плавающей запятой. К счастью, настил их превращает их обратно в целые числа.10_vs'
- Расширить каждое ('
) целое число как базовое число 10 (_vs
означает «вектор из скаляра»). Обратите внимание, что нам не пришлось использовать оператор Each'
в вышеприведенных функциях, потому что они работают с атомами.@[...;100;0,]
- Изменить элемент в нашем списке с индексом 100 (пустой список, который является результатом расширения 0 в основание 10) с помощью функции0,
, которая добавляет ноль вперед. Без этой коррекции эта функция не будет работать на входе 0.&x in'
- Теперь верните индексы (&
), гдеx
есть цифра в (_in
) каждый ('
) из расширений, которые мы так тщательно построили выше.|a@
- Наконец, используйте эти индексы для индексацииa
и переверните список в правильном порядке.Использование очевидно, хотя удачи вам в переводчике. (На Github есть реализация с открытым исходным кодом, которую вы можете скомпилировать.)
источник
удар
5549 символов:(не считая пробелов вокруг
&&
)Выполняя это, говоря:
будет производить:
источник
;
s в новые строки и сохранить 2 балла.PHP 67 байт:
Да, есть вызов strpos, но я использую только номера!
Вот версия «без гольфа»:
Чтобы это работало, вы можете проверить это здесь: http://writecodeonline.com/php/
Просто не забудьте добавить
$_GET[n]='<number>';
в начало кода.Или на сервере лампы или xampp вы можете создать страницу и затем открыть ее в браузере с параметром
?n=<number>
после имени файла.источник
Mathematica 28
Извините, я просто не смог устоять.
:)
Инструкции: «При условии, что цифра от 0 до 9 (включительно), ваша функция / подпрограмма должна печатать все числа от -100 до 100 (включительно), которые содержат данную цифру».
Далее печатаются все такие числа по порядку.
В качестве специального бонуса он печатает те числа в том же диапазоне, которые не содержат данную цифру. :)
источник
Моя первая попытка здесь, так что, возможно, я делаю что-то не так, пожалуйста, извините;)
Итак, я не был уверен, нужно ли мне добавлять весь класс или только логику внутри.
Java - 199 символов
Вот более читаемая форма:
Я предполагаю, что основная идея была не так уж плоха, но требовалось слишком много исключений, чтобы, наконец, сработать для всех случаев ...: /
источник
0
:(intx
... не должно бытьint x
:?C -
104107114 символов - 0 =104107114Ungolfed:
источник
0
содержит0
.R 87
93Вот улучшение:
(Потенциально) Более читабельно, с примечаниями:
источник
0
.0
. Вы пробовали с этой последней версией? Я использую R 3.0.1.Пролог: 75
источник
test.pl
файл, запустилswipl
, ввелconsult('test')
и затем ввелf(9)
. Но это только вернулосьfalse
.С ответом в 98 символов
Это одна из самых сексуальных вещей, которые я когда-либо кодировал
Старая версия, с 104 непробельными символами:
«Работает для меня», используя GCC и CLANG.
источник
GNU coreutils (44)
где
tr
используется для преобразования новых строк в пробелы иecho
предоставляет один последний символ новой строки.источник
Javascript 116
источник
J - 27 символов
Все пробелы безопасно удаляются, что означает 27 символов. Отрицательные числа в выводе будут иметь
_
отрицательный знак: именно так J записывает свои отрицательные числа.Разъяснение:
V & (i: 100)
- Bind (&
) набор чисел от -100 до 100 включительно (i:100
) в качестве правого аргумента основного глагола (V
). Единственный аргумент всего глагола попадает в левую сторону.(U"0 # ])
- Используйте результат глаголаU
над каждым числом из правого аргумента ("0
), чтобы выбрать (#
) элементы из правого аргумента (]
).(e. 10 #.^:_1 |)
- Учитывая цифру для проверки в качестве левого аргумента и число для проверки в качестве правого аргумента, разверните в базе 10 (10 #.^:_1
) абсолютное значение числа (|
) и проверьте, является ли цифра элементом этого расширения (e.
).Использование:
источник
-
/ минус». K позволяет использовать отрицательный знак «естественно» в числах, и случайно K вышел из загадочного синтаксического кластерного отвращения. Если это действительно irking вас, работа в выборе;8!:1
,'4.0'8!:2
или'-'I.@:=&'_'}":
, стоимость 7, 11 и 16 символов соответственно , чтобы результирующая программе функции вместо выражения, по моим подсчетам.Groovy, 127
Никаких строк (кроме вывода пробелов между числами), никаких массивов символов или других массивов, никаких регулярных выражений. Проверено с 0. Выход:
-100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100
источник
Javascript - 108
Не уверен, будет ли принят во внимание существующий ответ javascript, потому что он использует регулярное выражение, поэтому я создал его без него:
Также может быть сокращено до 101, если переменная x указана напрямую, например:
Он в основном проверяет, равны ли абсолютные значения операций div или mod цифре (что также работает для 100).
источник
x=1
это не для печати-100
или100
.1
работает хорошо, но теперь0
печатает1
,2
,3
... Жаль быть нарушителем здесь.prompt()
возвращает строку, поэтому я добавил * 1, и, надеюсь, теперь все должно быть в порядке. Спасибо за ваши предложенияparseInt(j/10)
может быть заменено на(0|j/10)
что и короче и избегает неявных строк. Преобразование строки в число (неизбежное)prompt()*1
не может быть сокращено как+prompt()
. (Или еще короче, измените функцию для запускаfor(x=+prompt(i=-100);...
.GW Basic: 107 символов без пробелов
Использование однозначных чисел для номеров строк помогает, и удаление пробелов означает, что на самом деле нет необходимости иметь несколько операторов в строке более одного раза, чтобы числа достигали 10.
источник
GROOVY, 71
Результаты в
источник
Javascript 96
Используя побитовый или:
источник
Haskell,
8675 (78 с необходимыми пробелами)Ungolfed:
источник
a 0=[-100....
иa d=[b|b<-....
вы можете избавиться отif then else
и сохранить несколько байт.Питон - 172 символа
Чтобы проверить в Python:
источник
VBA 121
(пробелы или
Sub
определения не учитываются):источник
0
?IIf(d = 0, IIf(d = n Mod 10, " " & n, "")
perl, 117 с удаленными бессмысленными пробелами
Я думаю, что вы искали что-то более подобное. Читает из стандартного ввода, выводит одну строку за матч. Никаких регулярных выражений, массивов (или наборов или хэшей или чего-либо еще, что является массивом под обложками) или строк, неявных или иных, кроме строк, передаваемых для печати:
например:
источник
F #
8792 - 7добавил 5 символов, потому что 0 не был обработан правильно. (Однозначные значения все будут возвращены.)
источник
Я впервые играю в гольф в коде. Это выглядит довольно интересно. Я не могу победить, но я пытался и хотел показать, на что я способен.
Python: 104 (89, если я могу проверить импорт) - если результаты должны быть напечатаны точно так, как показано в примере
Python: 71 - если вывод может быть сделан вне функции, и единственным выходом является то, что не печатаются нарушающие числа
источник
JavaScript 125 char
Извините за несколько правок, у меня были проблемы с этим с моего телефона :)
источник
Dogelang, 42 непробельных символа
То же, что и мое решение на Python, только что преобразовано в dogelang .
источник