Ten problem pochodzi z Pięciu problemów programistycznych, które każdy inżynier oprogramowania powinien być w stanie rozwiązać w czasie krótszym niż 1 godzina, co samo w sobie jest interesującą lekturą. Pierwsze kilka problemów jest banalnych, ale czwarty może być nieco bardziej interesujący.
Biorąc pod uwagę listę liczb całkowitych oddzielonych pojedynczą spacją na standardowym wejściu, wydrukuj największe i najmniejsze wartości, które można uzyskać, łącząc liczby całkowite razem w ich własnym wierszu.
Na przykład:
Wejście:
5 56 50
Wynik:
50556
56550
Różne punkty zamówienia:
- Kolejność wyników jest najmniejsza niż największa.
- Można drukować tylko najmniejsze i największe wartości (powtarzanie wszystkich odmian i ich drukowanie jest nieprawidłowe).
- Na liście zawsze będą dwie lub więcej liczb całkowitych.
- Możliwe, że największe i najmniejsze wyniki będą takie same. W przypadku wprowadzenia
5 55
numer555
należy wydrukować dwukrotnie. - Liczby całkowite niekoniecznie są różne.
5 5
jest poprawnym wejściem. - Wiodące
0
s na liczbach całkowitych nie są prawidłowym wejściem. Będziesz nie należy uwzględnić05 55
.
Ponieważ jest to kod golfowy, wygrywa najkrótszy wpis.
05
), czy uważamy to za,05
czy po prostu5
?Odpowiedzi:
CJam,
1413 bajtówCałkiem prosto. Tak to działa:
Wypróbuj online tutaj
źródło
e!
istniałem (nawet jeszcze nie pojawia się na wiki).Pyth,
1413 bajtówGeneruje wszystkie permutacje i sortuje je, drukując pierwszy i ostatni element.
źródło
J
inline:hJSmsd.pcz)eJ
Python 2,
10499 bajtówTak.
Edycja: dzięki xnor za -5 bajtów!
źródło
sorted
działa bez nawiasów, ale możesz także uniknąć sortowania i po prostu weźmin
imax
.Mathematica,
6458 bajtówDefiniuje to nienazwaną funkcję pobierającą ciąg znaków i wypisującą dwie linie. To całkiem proste jak pozostałe: uzyskaj wszystkie permutacje, połącz je razem, posortuj je i wydrukuj pierwszy i ostatni wynik.
Sześć bajtów zaoszczędzonych dzięki alephalpha.
źródło
{#&@@#,Last@#}
=>#[[{1,-1}]]
JavaScript (ES6)
54 7285To łatwiejsze niż się wydaje. Po prostu posortuj je leksykograficznie. Dobra wiadomość: dokładnie tak działa sortowanie w javascript.Cóż ... nie, to źle ... wciąż (bardziej skomplikowane) porównanie leksykografów może wykonać zadanie.Uwaga: mając wartość liczbową aib, a + [b] jest skrótem do znaku + '' + b, ponieważ potrzebujemy konkatenacji łańcucha, a nie sumy.
Uwaga 2: nowa linia wewnątrz `` jest znacząca i należy ją policzyć
Edytuj Nie kłóć się z moderatorem (... tylko żartuję)
Edit2 Naprawiono format we / wy za pomocą wyskakujących okienek (patrz Domyślne dla Code Golf: Metody wejścia / wyjścia )
Przetestuj w konsoli Firefox / FireBug
źródło
J, 34
36,42bajtówprosta brutalna siła:
źródło
Haskell, 98 bajtów
Podziel ciąg wejściowy w spacjach, połącz każdą kombinację i sortuj. Wydrukuj pierwszy i ostatni element.
źródło
Julia, 77 bajtów
Tworzy to nienazwaną funkcję, która przyjmuje wektor jako dane wejściowe i drukuje minimum i maksimum permutacji połączonych elementów. Aby to nazwać, nadaj mu nazwę, np
f=v->...
.Niegolfowane + wyjaśnienie:
Sugestie są mile widziane!
źródło
JavaScript ( ES6 ) 134
Niestety w JS nie ma wbudowanej funkcji permutacji :(
źródło
R, 59 bajtów
źródło
combinat::permn
.::
wymaga załadowania pakietu (przezlibrary
lubrequire
), ale nie:::
. Mogę się mylić; muszę przeczytać o tym trochę więcej. Dzięki.permn
bezpośrednio bezlibrary(combinat)
.library(combinat)
zanim będziesz mógł z niej korzystaćpermn
. ;)Ruby 75
Nie w moim „ojczystym” języku, ale w tym, o którym pomyślałem, że spróbuję… dlatego może (ewentualnie) skorzystać z kilku wskazówek golfowych. Mimo to niezły uczestnik.
Nie powiedziałbym, że to eleganckie, że wszystko jest wbudowane w język. Powinno być dość oczywiste, jak to działa.
źródło
{|x|x.join}
z(&:join)
na 3 oszczędności bajtowych.puts$<.read.split.permutation.map(&:join).minmax
puts gets.split.permutation.map(&:join).minmax
Perl,
7970B (68 + 2)use Math::Combinatorics;say for(sort map{join'',@$_}permute@F)[0,-1]
Zadzwoń z
echo 13 42 532 3 6|perl -M5.10.0 -an scratch.pl
. Kara za +2 bajty-an
. Wstyd o długości nazwy modułu ...źródło
JavaScript (ES6), 85 bajtów
stosowanie:
źródło