У меня есть список десятичных цифр:
4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4
Список десятичных цифр известен как элементы. Из этих элементов мы можем сформировать «куски», сгруппировав одинаковые и смежные номера. Я хочу назначить каждому чанку уникальный номер, начиная с 1 и увеличивая на 1 в том порядке, в котором чанки появляются в исходном списке. Итак, вывод для данного примера будет выглядеть так:
1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5
Формат ввода
Список цифр. (0-9) Вы можете использовать встроенные языковые функции для чтения этого списка, как хотите. Кодировка: ASCII
Выходной формат
Серия десятичных чисел, разделенных разделителем. Ваша программа всегда должна использовать один и тот же разделитель. Разделитель должен быть длиннее 0 бит. Кодировка: ASCII
Применяются стандартные лазейки.
источник
You may use your language built-ins to read this list however you want.
. Означает ли это, что мы должны включить конвертер строки в список в нашем представлении? И которые мы позволили вывести в виде списка?Ответы:
Python 3.8 (предварительная версия) , 41 байт
Попробуйте онлайн!
Хвала волшебному моржу
:=
выражений присваивания.Python 2 , 42 байта
Попробуйте онлайн!
источник
id
потому что это 2 байта длиной ...id
Python 2 , 44 байта
Попробуйте онлайн!
источник
APL (dzaima / APL) , 7 байтов SBCS
Функция анонимного молчаливого префикса. Печать разделена пробелами.
Попробуйте онлайн!
2≠/
попарное неравенство1,
подготовить 1+\
накопленная суммаисточник
Желе ,
65 байтПопробуйте онлайн!
Сохранено один байт благодаря UnrelatedString !
Входы и выходы в виде массива (с открывающими / закрывающими скобками)
Как это работает
источник
Wolfram Language (Mathematica) , 29 байт
Попробуйте онлайн!
источник
05AB1E , 5 байтов
Попробуйте онлайн!
источник
¥Ā
также может бытьüÊ
.Haskell , 40 байт
Попробуйте онлайн!
источник
Perl 6 , 21 байт
Попробуйте онлайн!
Блок анонимного кода, который принимает список и возвращает список. Это работает, сравнивая, не равны ли каждая пара смежных элементов, чем принимая совокупную сумму списка.
источник
05AB1E , 4 байта
Попробуйте онлайн!
источник
ƶ
... +1ηεγg
R , 33 байта
Попробуйте онлайн!
Использует тот же метод накопленной суммы, что и Луис Мендо и другие.
источник
MATL , 8 байт
Попробуйте онлайн!
Объяснение:
источник
Желе , 4 байта
Попробуйте онлайн!
Как?
источник
Октава / MATLAB, 25 байт
Попробуйте онлайн!
источник
Haskell ,
4643 байтаПопробуйте онлайн!
Анонимная функция pointfree, которая берет список и возвращает список
источник
J , 12 байт
Попробуйте онлайн!
Аналогично ответу Адама на APL
источник
Perl 5 , 27 байт
Попробуйте онлайн!
Опция командной строки
-p
заставляет perl читать строку ввода из STDIN в «переменную по умолчанию»$_
. Затем поиск заменяет все цифры$_
счетчиком$i
. И$i
увеличивается для каждой цифры, которая отличается от предыдущей цифры, которая также находится на первой цифре, поэтому счетчик начинается с1
. Предыдущая цифра сохраняется в$p
.источник
Pyth ,
1311 байтПопробуйте онлайн!
-2 байта благодаря мистеру Xcoder
источник
hMsM._+0nVt
для -2 байтов.rQ8
он такой же, какr8
и.n
может быть иs
для -2Q
Скала , 75 байт
Попробуйте онлайн!
Если вход и выход должны быть разделены запятой String (а не List), тогда 102 байта.
источник
Желе , 5 байт
Попробуйте онлайн!
Первоначально я стремился к 4-байтам (та же программа, но без
Ż
), но затем быстро понял, что 1 должен быть добавлен каждый раз из-за недосмотра ... Несмотря на то, что в желе есть еще 5-байт, я буду на самом деле сохранить это, потому что он использует другой метод.источник
JavaScript (ES6), 30 байт
Принимает ввод как массив целых чисел.
Попробуйте онлайн!
комментарии
источник
PHP , 52 байта
Попробуйте онлайн!
Ввод через командную строку, вывод в
STDOUT
.Спасибо @ Night2 за досадное исправление ошибок
'0' == 0
сравнения!источник
Юлия 1,0 , 56 байт
Попробуйте онлайн!
источник
Japt v2.0a0, 9 байт
Попробуй
источник
Добавить ++ , 23 байта
Попробуйте онлайн!
Как это работает
источник
Japt ,
87 байтПопробуй
источник
Сетчатка 0.8.2 , 34 байта
Попробуйте онлайн! Объяснение:
Совпадение каждого числа по очереди.
Начните смотреть назад как можно больше матчей. (Следующие записи будут в порядке справа налево, так как это выглядит за спиной.)
Пропустить разделители.
Попробуйте найти тот же номер, что и в прошлый раз, но если это не удастся, просто сопоставьте любой номер, но помните, что мы должны были сопоставить новый номер.
Убедитесь, что все числа совпадают.
Подсчитайте количество новых номеров.
источник
Stax , 10 байт
Запустите и отладьте его
Выход использует пробел в качестве разделителя. Входные данные соответствуют точным спецификациям, используя запятые в качестве разделителей, и теперь заключают в них фигурные скобки
источник
C (gcc) ,
6261 байтЭто одна из немногих записей, которые я сделал, когда полная программа короче представления функции!
При первом проходе мне наплевать на предыдущее значение, поэтому я полагаюсь на тот факт, что
argv
указатель куда-то находится и вряд ли будет между [0..9]!Попробуйте онлайн!
источник
Скала , 114 байт
Попробуйте онлайн!
источник
C (gcc) , 62 байта
Попробуйте онлайн!
Функция, которая принимает список и его длину в качестве аргументов.
C (gcc) , 60 байтов
Попробуйте онлайн!
Выходы в унарном виде, разделены0
систочник