Учитывая строку цифр или целое число в качестве входных данных, вам придется проиндексировать его.
Вот как вы изменяете ввод. Мы будем использовать 30043376111
в качестве примера:
Сначала найдите сумму индексов каждого вхождения соответствующих цифр:
0: 1 + 2 = 3
1: 8 + 9 + 10 = 27
3: 0 + 4 + 5 = 9
4: 3
6: 7
7: 6
Затем создайте новое целое число или строку, в которой указанные выше цифры идут в порядке сумм их индексов. В случае, если несколько цифр дают одинаковую сумму, меньшая цифра стоит перед большей:
047631
Наконец, удалите все ведущие нули и верните или напечатайте результат:
47631
Вы должны написать программу или функцию, которая возвращает или печатает введенный индексированный ввод.
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
Дополнительные тестовые случаи могут быть добавлены по запросу.
Ответы:
к 7 байт
онлайн репл
Сопоставление функций является композицией, поэтому не требуется явного параметра или ввода.
источник
Haskell, 69 байт
Принимает строку, возвращает число. Пример использования:
f "30043376111"
->47631
. Попробуйте онлайн!Довольно просто: сначала отсортируйте цифры входной строки по сумме их индексов и по самой цифре (-> пары (sum ..., d)), удалите дубликаты и преобразуйте их в число, чтобы убрать начальные символы
0
. Это0+
необходимо, чтобы получить правильные типы.источник
С накоплением , 59 байт
Попробуйте онлайн!
Это берет символьную строку (как
$'1231231'
) как ввод от вершины стека, и оставляет строку в стеке.объяснение
Теперь мы остались с парами (chr, сумма индексов).
источник
05AB1E ,
2928 байт-1 спасибо Райли
Попробуйте онлайн!
источник
TFN
на9Ývy
JavaScript (ES6), 98 байт
Берет строку
n
, затем преобразует ее в набор, а затем в массив различных цифр. Сортирует эти цифры в числовом порядке, а затем снова сортирует в соответствии с суммами индексов. Объединяет отсортированный массив в строку и, наконец, преобразует в число для удаления начальных нулей.источник
.sort()
, вход 1332 дает 132 вместо 123.PowerShell , 88 байт
Попробуйте онлайн!
Устанавливает пустую хеш-таблицу
$a
, затем преобразует входные данные$args
вchar
массив и перебирает каждый элемент|%{...}
. Мы устанавливаем значение в «текущий элемент»$a
для увеличения на$i++
, чтобы подсчитать индексы нашего ввода. Например, для ввода300433766111
первый цикл$a[3]
получает+=0
; следующий цикл,$a[0]
получает+=1
; и т.п.Далее нам нужна
Sort
наша хеш-таблица. К сожалению, из-за внутренней языковой причуды это означает, что нам нужно,$a.GetEnumerator()
прежде чем мы сможем выполнить фактическую сортировку. Мы сортируем поvalue
, затем поname
, чтобы удовлетворить требование меньших цифр сортируются в первую очередь. Мы извлекаем их.Name
s (в отсортированном порядке),-join
их вместе в строку, и приводим эту строку как int+
для удаления начальных нулей. Это осталось на конвейере и вывод неявный.источник
Желе , 10 байт
Попробуйте онлайн!
Принимает и возвращает целое число.
Как?
источник
PHP, 103 байта
источник
Python 2,
10292 байтаСпасибо Бену Франкелю за сохранение 10 байт!
Попробуйте онлайн!
Принимает ввод в виде строки и выводит целое число. Использует словарь для хранения суммы индексов, затем сортирует ее по значению. Преобразует в целое число для удаления начальных нулей, потому что
int
короче, чем.lsplit('0')
.источник
a[j]=a.get(j,0)+i
экономит 10 байт.Python 3.5,
8685 байтСпасибо @Ben Frankel за сохранение байта:
Старый код:
Анонимная функция, принимающая строку цифр и возвращающая целое число
источник
sum(i*(c==d)for
сохраняет 1 байт.Пип , 18 байт
Принимает число в качестве аргумента командной строки. Попробуйте онлайн!
объяснение
источник
C #, 245 байт
Не в восторге от того, как долго это закончилось, и, вероятно, оно может быть короче, но это то, чем я закончил.
источник
Perl 6 ,
65 6152 байтаПопытайся
Попытайся
Попытайся
расширенный
источник
Scala,
123104 байтаПример (с использованием Scala REPL):
Довольно просто, используя кортеж в качестве предиката сортировки для вторичной сортировки.
источник
Pyth, 9 байт
Попробуйте онлайн
Принимает строку цифр в качестве ввода.
источник