Ваша задача - написать функцию или программу, которая берет два неотрицательных целых числа i
и k
( i
≤ k
), и выяснить, сколько нулей вы бы написали, если бы вы написали все целые числа от i
до k
(включительно) в вашей базе выбора на кусочке бумаги. Выведите это целое число, число нулей, в стандартный вывод или тому подобное.
-30%
если вы также принимаете третий аргумент b
, целочисленная база для записи чисел. Для получения этого бонуса необходимо обработать как минимум две базы.
- Вы можете принять ввод в любой базе, которая вам нравится, и вы можете изменить базу между тестовыми примерами.
- Вы можете принять аргументы
i
,k
и , возможно ,b
в любом порядке. - Ответы должны обрабатывать хотя бы одну не одинарную базу.
Тестовые случаи (в базе 10):
i k -> output
10 10 -> 1
0 27 -> 3
100 200 -> 22
0 500 -> 92
Это код-гольф; Наименьшее количество байтов побеждает.
code-golf
number
base-conversion
counting
Филип Хаглунд
источник
источник
Ответы:
Желе, 1 байт
Это использует базу
k+2
, в этом случае есть один 0, еслиi
равен 0. Он принимает два аргумента, но применяет логическое NOT только к первому.Если мы не хотим обманывать:
7 байтов - 30% = 4,9
-1,1 очка @Dennis
Это получает бонус.
источник
Python 2, 36 байт
Кредит muddyfish для `` трюк.
источник
05AB1E ,
31 байтИспользует базу
k+2
как ответ желе, код:Объяснение:
3-байтовая версия без читов:
Код:
Объяснение:
Бонус дает мне 3,5 байта из-за ошибки:
Объяснение:
Использует кодировку CP-1252.
источник
Japt, 3 байта
Использует базу
k+2
, как желе ответ. Есть ноль, еслиi==0
. Проверьте это онлайн!Лучшая версия,
108 байтЭтот использует базу 10. Проверьте это онлайн!
Бонусная версия,
1412 байт - 30% = 8,4К сожалению, с игрой в гольф, бонус больше не стоит ... Проверьте это онлайн!
Как это устроено
источник
ES6,
9186 - 30% = 60,2 байтаИли сохраните 3 (2.1) байта, если b не нужно по умолчанию 10.
Лучшая не бонусная версия, которую я мог сделать, была 65 байтов:
Редактировать: 5 байтов сохранены с помощью трюка с нулевым счетом @ edc65.
источник
Серьезно, 10 байт
Объяснение:
Попробуйте онлайн!
С бонусом: 11,9 байта
Попробуйте онлайн!
Объяснение:
источник
CJam,
12103 байтаЭто использует ярлык @ThomasKwa делает.
Если это не разрешено, то вот 10-байтовый ответ.
Хороший и короткий! Работает как Серьезный ответ @ Mego.
Спасибо @Dennis!
Было весело писать мой первый ответ CJam!
Попробуй это здесь!
источник
T-SQL, 394 байта (без бонуса)
Я понимаю , почему нет , верно?
И дружелюбный
источник
Рубин, 46 - 30% = 32,2 байта
Возможно, вы могли бы играть в гольф больше, но по крайней мере я получаю 30% бонус!
... или без бонуса (27 байт.)
Советы приветствуются, все еще изучая всю эту вещь "Рубин".
источник
(i..k)
так же хорошо, как[*i..k]
в первом случае.Брахилог , 26 байт
Принимает ввод в виде списка
[i,k]
.объяснение
источник
Юля, 48 байтов - 30% = 33,6
Это функция, которая принимает три целых числа и возвращает целое число. Один из аргументов указывает базу, так что это дает право на бонус.
Ungolfed:
Реализация бонуса дает балл чуть лучше, чем не реализация (34 байта):
источник
Seriously, 2 bytes
This might be taking the Jelly answer trick to the limit, but here is a simple 2 byte Seriously answer.
Try it online!
источник
Pyth, 6.3 bytes, with bonus (9 bytes - 30%)
Explanation:
Try it here
Or 7 bytes without the bonus:
Explanation:
Try it here
Or use a test suite
источник
/sjRQ}EE0
PHP, 50 Bytes
supports decimal only
supports decimal and binary with Bonus 63
supports decimal,hexadecimal, octal and binary with Bonus 77.7
supports base 2 - 36 with Bonus 78.4
источник
JavaScript (ES6), 50 (71 - 30%)
No bonus, base k+2 is 10 bytes
(i,k)=>+!i
No bonus, unary is 8 bytes
(i,k)=>0
TEST
источник
o='0'
before the loop your code continues to work even whenk<i
.(i ≤ k)
. Update I tried this but in fact it does not work for k<iJolf, 7 bytes
Replace
♂
with\x11
. Try it here!источник
Lua 74 bytes
There's gotta be a more effective way to do this...
I thought I was really onto something here:
But alas... It keeps getting longer and longer as I realize there's more and more zeroes I forgot about...
источник
APL, 22 bytes
This is a monadic function that accepts the range boundaries on the left and right and returns an integer.
Ungolfed:
Try it here
источник
Haskell, 29 bytes
I'm using base 10.
Usage example:
100 # 200
->22
How it works: turn each element in the list from
i
tok
into it's string representation, concatenate into a single string, take a1
for every char'0'
and sum those1
s.источник
MATL, 7 (10 bytes − 30% bonus)
Try it online!
This works in release 11.0.2, which is earlier than this challenge.
Explanation
источник
Matlab: 27 bytes
creates a vector from lower number to larger one, then converts all numbers to string and counts all the '0' symbols.
источник
Python 3, 52.
Tried to implement the bonus, but it doesn't seem to be worth it.
With test cases:
источник
Perl 6, 23 bytes
$^i..$^k
).comb
is a Str method ).comb(/0/)
)+
)Usage:
источник
Mathematica, 39 bytes, 27.3 with bonus
источник
C# 112 Bytes
источник
PHP, 84 bytes *.7=58.8 (bases 2 to 36)
or
takes decimal input from command line arguments; run with
-r
.источник
<?=0
supports unary and alphabetic. ;)PowerShell,
5654514842 bytesTakes input, creates a range with
$i..$k
then-join
s that together into a string, followed by a regex-split
command that separates the string into an array by slicing at the0
s. We encapsulate that with().count-1
to measure how many zeros. That's left on the pipeline, and output is implicit.Saved 6 bytes thanks to @ConnorLSW
Try it online!
Base-handling in PowerShell is limited and doesn't support arbitrary bases, so I'm not going for the bonus.
источник
param($i,$k)(-join($i..$k)-split'0').Length-1
works for me, -3, or use.Count-1
to save even more, haven't tested that yet though.'0'
, so that trimmed off a few more.Java 8, 102 bytes - 30% = 71.4
Why not.
Without the bonus, 96 bytes (so the bonus actually improves my score!):
This implements the following:
источник
Clojure,
5049 bytesOh regex is shorter than filtering. Original:
Very basic, uses the set of character
\0
to remove others and counts how many were found.источник