Instrukcje
Barry nie jest tak dobrym programistą backendowym odpowiedzialnym za małe API, które powinno dostarczać informacji o zakupach dokonanych w sklepie klienta. Jednak nie wykonał świetnej roboty, a twój szef każe ci to naprawić po stronie klienta. Idealnie powinieneś otrzymać wartości oddzielonych przecinkami, takich jak 927,2,45,90
które odpowiadają coś takiego item_id
, item_amount
, unit_price
,total
W tym pierwszym układanki interesują nas tylko item_id
i item_amount
ale potrzebujemy innych pól w celu przedstawienia problemu. Barry czasami robi rzeczy mieszają się i powraca hałasu jako część wyjścia, dostaje także niewłaściwej kolejności, powrót noise
, noise
, unit_price
, total
, item_id
, item_amount
.
Twoje zadanie
Musisz przechowywać na mapie (lub podobnej strukturze) pary item_id
i item_amount
niezależnie od tego, czy Barry zwraca je poprawnie, czy nie, i drukować każdy element w nowym wierszu z możliwie najmniejszą liczbą znaków. (Przechowywanie nie jest obowiązkowe, zależy nam tylko na wydajności)
Przykładowe dane wejściowe (mieszane poprawne i niechlujne formaty)
103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000
Innymi słowy wejście będzie albo a,b,x,x
czy x,x,x,x,a,b
gdzie co dbamy o to, a
& b
. Musisz podać kod, zakładając, że mamy zmienną o nazwie G
(lub dowolną inną nazwę) ze wszystkimi wierszami csv.
Próbka wyjściowa
103,2
106,1
67,2 //This one was messy
4,20
Tolerancja
Jeśli chodzi o odpowiedź, istnieje pewien margines tolerancji. Odpowiedzi w podobnych formatach, ale zachowujące prawidłowe wartości, również będą akceptowane. Formaty podoba [a,b]
, (a,b)
czy {a,b}
są ważne, ale a,b
jest korzystne.
Chociaż pierwsza łamigłówka miała mieszaną akceptację ze względu na to, że była łatwa i szybka do rozwiązania, czułem również, że niektórym się to podobało. Więc na razie będę nadal robić szybkie golfy
x,x,x,x
ix,x,x,x,x,x
gdziex
oznacza liczbę?Odpowiedzi:
Pyth, 10 bajtów
Wypróbuj online: Pyth Compiler / Executor
(Pierwsze 4 znaki
=G.Q
odczytują wszystkie dane i zapisują jeG
)Wyjaśnienie
źródło
Perl, 24
Przykład:
źródło
Python 3,
123767262 bajtówJestem nowicjuszem, muszę gdzieś zacząć ...
Z sugestiami xnor i DLosc (62 bajty):
źródło
for
mogą znajdować się w tym samym wierszu w Pythonie, o ile w treści nie ma innej instrukcji blokowej.for
aby uniknąć wcięć. Warunek[0,4][...]
można skrócić4*(...)
, wykorzystując fakt, że boole są równe 0/1. Ponadto, jeśli piszeszd[x:x+2]
jakod[x:][:2]
, chociaż jeden znak dłużej, pozwala uniknąć zapisywania wyrażenia dlax
zmiennej.Sed, 32 bajty
Spowoduje to usunięcie wszystkiego do czwartego przecinka, jeśli taki istnieje. Następnie usuwa wszystko z drugiego przecinka (który mógł być wcześniej szósty).
Udało mi się nawet uzasadnić!
źródło
JavaScript, 44 bajty
Zakładając wejście w zmiennej
G
.Edycja: Właśnie zdałem sobie sprawę, że to bardzo przypomina perlowe rozwiązanie nutki.
Prezentacja Snippet:
źródło
Scala, 68 bajtów
- MrBones
Scala,
4670 bajtówEdycja: wydrukuj wynik
Próbny
źródło
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 bajtówWypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Powłoka POSIX, 30 bajtów
Zakładając POSIX
sed
icut
są obecne:Duplikuje linię, pozostawiając interesujące dane gotowe do wyodrębnienia z pól 5 i 6.
źródło
JavaScript,
1171129995847671 bajtówJS Fiddle
źródło
;
ze,
w ciele pętli, a więc usuwanie szelki{
i}
for of
możesz zapisać 3 bajty. Działa w każdej nowoczesnej przeglądarce.for(r of q=G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])
Pypeć , 12 + 1 = 13 bajtów
Używa
-l
flagi, która daje wynik jako rozdzielone spacjami listy liczb w każdym wierszu. *Wyjaśnienie:
g
. Ponieważg
zwykle jest inicjowany z argumentów wiersza poleceń, możesz również umieścić tam dane wejściowe dla tych samych wyników.^',
dzieli (każdy ciąg znaków na) przecinkami.M
mapuje funkcję do każdego elementu w wyniku._@[4 5]
definiuje funkcję lambda. Argument funkcji jest reprezentowany przez_
;@[4 5]
zwraca listę jego czwartego i piątego elementu. Jeśli lista zawiera sześć elementów, będą to dwa ostatnie. Jeśli ma cztery, indeksy się zawijają, a więc wynik to pierwsze dwa. (Np"abcd"@4 == "abcd"@0 == "a"
.)[[103 2] [106 1] [67 2]]
która jest automatycznie drukowana na końcu programu.-l
Flaga łączy każdym podmenu w przestrzeni, a następnie całość na nowej linii, więc wynik jest następujący:* Obecnie. Mogę zmienić to zachowanie, ale nadal planuję mieć flagę, która robi to samo.
źródło
Perl, 37
35
znaki+2
dla-p
i-l
. Nie jestem pewien, czy jest takie podejście w Perlu, które pokonałoby rozwiązanie @ nutki , ale pomyślałem, że i tak opublikuję ten pomysł.Biegnij z:
źródło
bash, 54
źródło
C, 95 bajtów
Kod jest prosty. Oto wersja bez golfa:
Sprawdź to tutaj
źródło
Ruby, 53
lub jest dobry.
źródło