Wyzwanie
Robin lubi mieć deklarację zmiennych w kształcie strzałki. Oto jak to robi:
- Wprowadź dowolną liczbę ciągów
- Uporządkuj je według rosnącej długości
Wyjmij je uporządkowane pośrodku, aby z grubsza utworzyć ujemny grot strzałki, taki jak ten (w zależności od tego, która kolejność jest najlepsza):
5 or 4 3 2 1 1 2 3 4 5
Przypadki testowe
Wkład:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Wydajność:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Wkład:
a
bb
cc
Dane wyjściowe (oba są prawidłowe):
bb
a
cc
cc
a
bb
Wkład:
one
four
seven
fifteen
Możliwe wyjście (jedynym innym prawidłowym wyjściem jest jego lustro pionowe):
seven
one
four
fifteen
Notatki
Ciągi znaków są w camelCase i nie mają cyfr ani znaków specjalnych, tylko małe i wielkie litery.
Dane wejściowe mogą być dowolne: rozdzielone przecinkami jako jeden ciąg, tablica, ... Dowolny format we / wy jest dozwolony.
- Między ciągami o tej samej długości akceptowane jest każde zamówienie.
Odpowiedzi:
Python 2 , 47 bajtów
Wypróbuj online!
źródło
[::-2]
bezpośrednio, aby zapisać 5 bajtów.R ,
6348 bajtówWypróbuj online!
Sortuj według długości łańcucha, a następnie połącz listę odwróconą z listą posortowaną, w końcu weź co drugi element, zaczynając od indeksu 1.
źródło
o<-L[...
Drugi sposób na „zmienne strzałkowe”. Mniej ważne,pryr::f(...)
działa tutaj dla 46. Wypróbuj online!R + pryr
dlatego zazwyczaj unikam tego, chyba że istnieje dobry powód - jak w przypadku pytań z teorii liczb,numbers
jest niezbędny.Javascript 77 bajtów
Pobiera dane wejściowe jako tablicę ciągów, wyświetla tablicę ciągów posortowaną strzałkami.
Wyjaśnienie
źródło
f=
. 77f=x=>x?f(x-1)
. Jeśli tak, musisz dołączyć,f
ponieważ wywołujesz go w swojej funkcji. Ponieważ jednak nie używasz rekurencji, nie musisz tego uwzględniaćf
. W Meta jest kilka postów, ten wydaje się nieco lepiej to wyjaśniać. codegolf.meta.stackexchange.com/a/9032/8340C # (interaktywny kompilator Visual C #) , 89 bajtów
Wypróbuj online!
źródło
K (oK) , 24 bajty
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
Wygeneruj
6 4 2 0 1 3 5
sekwencję, użyj jej do indeksowania rosnących długości danych wejściowych i użyj tej do indeksowania do oryginalnej tablicy:źródło
Galaretka ,
98 bajtówWypróbuj online!
ma również 8 bajtów.
Podziękowania dla @EriktheOutgolfer i @JonathanAllan za oboje oferowanie golfa w celu zaoszczędzenia bajtu.
źródło
Ṛ€1¦
może się staćm"-
.LÞŒœṚ;¥/
Rubinowy , 51 bajtów
Wypróbuj online!
źródło
05AB1E ,
65 bajtówZaoszczędził 1 bajt dzięki Kevinowi Cruijssenowi
I / O to lista ciągów.
Link został zmodyfikowany dla I / O oddzielonego znakiem nowej linii dla łatwiejszego testowania.
Wypróbuj online!
Wyjaśnienie
źródło
R
i wymienić«
zi
zapisać bajt, ponieważ zasada trzecia bullet-punkt pozwala obie wersje uninterleaving.J , 11 bajtów
Wypróbuj online!
Najpierw uporządkujemy.
Następnie zmniejszamy formularz listy od prawej do lewej, ale naprzemiennie po której stronie umieszczamy nowy element. Gotowy.
źródło
PowerShell , 66 bajtów
Wypróbuj online!
Pobiera dane wejściowe przez rozpryskiwanie, które manifestuje się w TIO jako osobne argumenty wiersza poleceń.
sort
s nal
ength, zapamiętuje to$a
i konstruuje zakres od1
docount
ciągów wejściowych. Następnie wyciągamy tylko te nieparzyste?{$_%2}
i wprowadzamy je do pętli|%{...}
. W każdej iteracji umieszczamy „ostatnią”, a następnie „trzecią od ostatniej” i tak dalej na rurociągu z$a[-$_]
. Oddzielnie kumulujemy się również w$x
„drugim od ostatniego”, „czwartym od ostatniego” itp. Poza pętlą i rurociąg jest opróżniany (więc te elementy są wyprowadzane), a następnie wyprowadzamy$x
. W obu przypadkach domyślny wynik automatycznie podaje nam nowe wiersze między elementami.źródło
PHP ,
144141 bajtówWypróbuj online!
-3 bajty dzięki @Ismael Miguel !
źródło
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
których[++$i%2]
indeks na przemian między a0
lub podobną1
będzie za każdym razem oceniać na inną funkcję. „Funkcje zmiennych” PHP pozwalają przypisać zmienną do funkcji i wykonać przez wywołanie z nawiasami (np .:$f='array_push'; $f($e,$d);
==array_push($e,$d)
), aby($e,$d)
następnie wywoływał oceniany element tablicy. To tylko krótszy sposóbif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. Zgadnij, w końcu było trochę cukru syntaktycznego PHP![array_unshift,array_push][++$i%2]($e,$d)
je(array_.[unshift,push][++$i%2])($e,$d)
. To, co zrobiłem, to usunięcie powtarzającego sięarray_
, konkatenacji, a następnie wynik jest przekazywany do połączenia.MATLAB, 87 bajtów
Pobiera dane wejściowe jako tablicę komórek ciągów, wypisuje kolumnę ciągów (nie jestem pewien, czy jest to zgodne z prawem)
PS: Dzięki Sanchises za wskazanie błędu z nieparzystymi danymi wejściowymi
źródło
f({'loooooooong','medium','short'})
end
jest opcjonalny dlafunction
. Używaniefunction x=f(y);x={...}'
jest krótsze niżfunction f(y);disp({...}')
.disp
tym, że nie jestem pewien, jakie są reguły wyjściowe. Czy powinien to być czysty tekst, czy nie? lubdisp({...})
jest w porządku, a nawet tak,x={...}
jak sugerujeszAPL (Dyalog Unicode) , 18 bajtów SBCS
Wypróbuj online!
Naprawiono błąd dzięki @ngn.
Wyjaśnienie:
¹
źródło
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
i staje się jeszcze krótszy, jeśli zmienisz go wAPL + WIN,
3138 bajtówZobacz komentarz Adamsa
Wypróbuj online Dzięki uprzejmości Dyalog Classic!
Monituje o zagnieżdżony wektor ciągów
źródło
≢
„licznika” do zastąpienia∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. Oczywiście wynik powinien był być'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Siatkówka , 26 bajtów
Wypróbuj online! Wyjaśnienie:
Sortuj linie w porządku rosnącym według długości (
$.&
zwraca długość linii).Tymczasowo usuń alternatywne linie i wyślij pozostałe linie w odwrotnej kolejności.
Zachowaj jedyne wiersze, które zostały tymczasowo usunięte i wyślij je.
źródło
Gaia , 10 bajtów
Wypróbuj online!
źródło
Japt, 8 bajtów
-3 bajty dzięki Shaggy!
Spróbuj
źródło
A.ë()
ale nie wiem, czy to doprowadzi do krótszego rozwiązania.PowerShell , 49 bajtów
Wypróbuj online!
Podwójna destylacja .
źródło
T-SQL, 84 bajty
Dane wejściowe to zmienna tabelowa
Wypróbuj online
źródło
Perl 6 , 31 bajtów
Wypróbuj online!
Sortuj według długości łańcucha, a następnie według sekwencji statycznej 0, -1, 0, -3, 0, -5, ...
źródło
JavaScript 95 bajtów
źródło
s.sort()
sortuje ciągi leksykograficzne, a nie według długości.Czerwony ,
116101 bajtówWypróbuj online!
źródło
perl 5 (
-p0777F/\n/ -M5.01
), 59 bajtówTIO
źródło
C (gcc) ,
136128 bajtówWypróbuj online!
-8 bajtów dzięki pułapkowi cat.
Funkcja
f
jest rozwiązaniem. Jako argumenty przyjmuje liczbę ciągów, same ciągi i bufor wyjściowy (plus cztery dodatkowe używane wewnętrznie).źródło
./.bin.tio
w wyjściu ?argv
, w tym nazwy plikut
w pierwszej kolejności zapominasz, o co ci chodzi, i trzymasz się ich nawet wtedy, gdy ich nie potrzebujesz!Japt , 8 bajtów
Dane wejściowe jako tablica wierszy, dane wyjściowe jako tablica 2 tablic wierszy, po jednej na każdą połowę listy.
Wypróbuj (Dodatkowy kod, aby zezwolić na operacje we / wy jako ciąg rozdzielany znakiem nowej linii)
źródło
Haskell ,
10496 bajtówWypróbuj online!
źródło