инструкции
Барри - не очень хороший бэкэнд-разработчик, отвечающий за небольшой API, который должен предоставлять вам информацию о покупках, совершенных в магазине клиента. Тем не менее, он не проделал большую работу, и ваш босс велит вам исправить это на стороне клиента. В идеале вы должны получить значения , разделенные запятой , такие как , 927,2,45,90
которые соответствуют что - то подобное item_id
, item_amount
, unit_price
,total
В этой первой головоломки мы заботимся только о том item_id
и , item_amount
но нам нужны другие поля в месте , чтобы представить эту проблему. Барри иногда получает вещи перепутали и возвращает шумовые как часть производства, он также получает неправильный порядок, вернувшись noise
, noise
, unit_price
, total
, item_id
, item_amount
.
Твое задание
Вам необходимо хранить на карте (или в аналогичной структуре) пары item_id
и item_amount
независимо от того, правильно ли их возвращает Барри, и печатать каждый элемент в новой строке с наименьшим возможным количеством символов. (Хранение не является обязательным, мы просто заботимся о выходе)
Пример ввода (смешанный правильный и грязный форматы)
103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000
Другими словами , вход будет либо a,b,x,x
или x,x,x,x,a,b
где то , что мы заботимся о a
& b
. Вы должны предоставить код, предполагая, что у нас есть переменная G
(или любое другое имя) со всеми строками csv.
Образец вывода
103,2
106,1
67,2 //This one was messy
4,20
Толерантность
Когда дело доходит до ответа, есть определенный запас терпимости. Ответы в похожих форматах, но с правильными значениями, также будут приняты. Форматы нравится [a,b]
, (a,b)
или {a,b}
являются действительными, но a,b
является предпочтительным.
Хотя первая головоломка была неоднозначной из-за того, что ее было легко и быстро решить, я также чувствовал, что некоторым это тоже понравилось. Так что я собираюсь продолжать делать быстрые гольфы
x,x,x,x
иx,x,x,x,x,x
гдеx
обозначает число?Ответы:
Pyth, 10 байт
Попробуйте онлайн: Pyth Compiler / Executor
(Первые 4 символа
=G.Q
читают все данные и сохраняют ихG
)объяснение
источник
Perl, 24
Пример:
источник
Python 3,
123767262 байтаЯ новичок, должен начать где-то ...
С предложениями xnor и DLosc (62 байта):
источник
for
могут находиться в одной строке в Python, если в теле нет другого оператора блока.for
избежать отступы. Условное[0,4][...]
можно сократить до4*(...)
, используя тот факт, что bools равен 0/1. Кроме того, если вы пишетеd[x:x+2]
какd[x:][:2]
, хотя и на один символ длиннее, вы можете избежать сохранения выражения дляx
переменной.Sed, 32 байта
Это удаляет все до 4-й запятой, если она есть. Затем он удаляет все со 2-й запятой (которая ранее могла быть 6-й).
И мне даже удалось прямо-оправдать!
источник
Javascript, 44 байта
Предполагая ввод в переменную
G
.Редактировать: Я только что понял, это выглядит как решение Perl Nutki.
Демонстрационный фрагмент:
источник
Скала, 68 байт
- MrBones
Scala,
4670 байтРедактировать: распечатать результат
демонстрация
источник
G.map{k=>val x=k.split(",");println((x++x).slice(4,6).mkString(","))}
G.map(_.split(",")).map(x=>println((x++x).slice(4,6).mkString(",")))
CJam,
181514 байтовПопробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Оболочка POSIX, 30 байт
Предполагая POSIX
sed
иcut
присутствующие:Дублирует строку, оставляя интересующие данные готовыми для извлечения из полей 5 и 6.
источник
Javascript,
1171129995847671 байтJS Fiddle
источник
;
с,
в теле цикла и , следовательно , удаление скобок{
и}
for of
вы можете сохранить 3 байта. Работает в любом современном браузере.for(r of q=G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])
Пип , 12 + 1 = 13 байт
Использует
-l
флаг, который выдает выходные данные в виде разделенных пробелами списков чисел в каждой строке. *Объяснение:
g
. Посколькуg
обычно инициализируется из аргументов командной строки, вы также можете поместить туда ввод для тех же результатов.^',
разбивает (каждая строка в) список на запятые.M
сопоставляет функцию каждому элементу в результате._@[4 5]
определяет лямбда-функцию. Аргумент функции представлен как_
;@[4 5]
возвращает список его 4-го и 5-го элементов. Если в списке шесть элементов, это будут последние два. Если их четыре, индексы оборачиваются, и в результате получаются первые два. (Например"abcd"@4 == "abcd"@0 == "a"
)[[103 2] [106 1] [67 2]]
, который автоматически печатается в конце программы.-l
Флаг присоединяется каждый суб-лист на пространстве , а затем все это на новой строке, поэтому результат выглядит следующим образом :* В настоящее время. Я могу изменить это поведение, но я все еще планирую иметь флаг, который делает то же самое.
источник
Perl, 37
35
персонажи+2
для-p
и-l
. Я не уверен, есть ли в Perl подход, который побил бы решение @ nutki , но я решил, что в любом случае опубликую эту идею.Бежать с:
источник
Баш, 54
источник
C, 95 байтов
Код прост. Вот негольфированная версия:
Проверьте это здесь
источник
Руби, 53
или это хорошо.
источник