Twoje dane wejściowe to lista / sekwencja / wektor / tablica 5-255 dodatnich liczb całkowitych, niekoniecznie unikatowych. Możesz założyć, który format wejściowy jest najbardziej odpowiedni i że każda liczba całkowita (jak również liczba liczb całkowitych) jest wybierana losowo równomiernie z zakresu 5-255.
Celem jest wyprowadzenie tej samej listy, w tym samym (lub równoważnym) formacie, ale posortowanym według rosnącej (nie malejącej) kolejności. Wspólne wczesne ćwiczenie w nauce języka. Zgłoszenia obejmują:
Odpowiedź, która działa poprawnie i osiąga cel; i
Druga odpowiedź, która zawiera irytujący błąd. Pomiędzy 1% a 10% czasu dane wyjściowe muszą być listą w poprawnym formacie i zawierającą poprawne elementy, ale w niewłaściwej kolejności (dowolna kolejność oprócz poprawnie posortowanej). Przez resztę czasu program musi działać poprawnie i osiągnąć cel.
Dwie odpowiedzi muszą mieć jedną odległość Levenshteina ; to znaczy, możemy uzyskać jeden od drugiego, usuwając jeden bajt, dodając jeden bajt lub zmieniając jeden bajt.
Punktacja jak zwykle w golfie kodowym (na podstawie krótszej z dwóch odpowiedzi), przy zwykłych lukach zabronione.
10% bonusu (spadek do wyniku), jeśli irytujący błąd jest niezależny od danych wejściowych, tj. Ponowne użycie tego samego wejścia nie odtwarza błędu (z wyjątkiem 1% do 10% czasu).
źródło
[5,5,5]
niemożliwe jest uzyskanie niewłaściwej kolejnościOdpowiedzi:
Python 3 , 36 bajtów
Wersja wolna od błędów, 37 bajtów
Wypróbuj online!
Irytująca wersja, 36 bajtów
Wypróbuj online!
Zależy to od wkładu i dlatego nie kwalifikuje się do premii.
Prawdopodobieństwo niepowodzenia wynosi około 2%. Nie działa, gdy długość wejściowa jest mniejsza niż 10.
W połączeniu z odpowiedzią LyricLy otrzymuje 34 bajty:
źródło
or1
zostanie zinterpretowany jako nazwa zmiennej i spowoduje błąd składniowy.05AB1E , 5 * 0,9 = 4,5 bajtów
Rozwiązanie robocze
Wypróbuj online!
Wyjaśnienie
Rozwiązanie zawierające błąd
Daje złe rozwiązanie w 10% przypadków (niezależnie od danych wejściowych).
Wypróbuj online!
Wyjaśnienie
To samo co działające rozwiązanie, z tym wyjątkiem, że odwraca listę, jeśli wybrana liczba jest prawdziwa.
źródło
100F
i stopkę,},
które pomagają nam wizualizować wynik funkcji wywoływanej na wejściu wiele razy. To pokazuje nam, że działające rozwiązanie zawsze zwraca poprawne wyniki, podczas gdy błędne ma wadliwe wyjście.Galaretka , 7 * (100% - 10%) = 6,3 bajtów
Wypróbuj online!
Wersja buggy:
Wypróbuj online!
W obu linkach znajduje się wiązka testowa, która uruchomi kod 100 razy, za każdym razem z listą podaną jako argument, a następnie zwróci wyniki.
Prawdopodobieństwo każdej długości wejściowej wynosi:
Zatem dla długości 1 istnieje prawdopodobieństwo 0%, dla długości 2 5%, dla długości 3 8,83̅%, dla długości 4 9,583̅% itd. Aż do długości ∞, która ma 10% prawdopodobieństwa.
źródło
0.1 - 0.1/(length!)
.Ṣ⁵X’¤¡
iṢ⁵X¤¡
powinien też działać: błędna wersja zwraca listę nieposortowaną <10% czasu, a biorąc pod uwagę, że dane wejściowe są wybierane jednorodnie losowo, powinno działać, oszczędzając 2 bajty.¹
bajt, aby zapisać 1 bajt (licznik reguł liczba bajtów = krótszy); istnieje również obcy łączenie overline po drugim6
w6.6̅%
.¹
”, ponieważ wtedy nie sortuje się przez 10% czasu.Python 3, wynik
5857–10% = 51,3Oszczędność bajtu dzięki ovs.
Wersja bez błędów, 57 bajtów
Wypróbuj online!
Wersja z błędami, 57 bajtów
Wypróbuj online!
Postanowiłem wypróbować rozwiązanie wykorzystujące bonus. Nie wyprzedza drugiej odpowiedzi w Pythonie, ale dobrze się wymyśliłem.
źródło
C, 71 * 0,9 = 63,9 bajtów
Bez błędów:
Wypróbuj online!
Powozik:
Wypróbuj online!
źródło
Groovy , 31 bajtów
Błędne rozwiązanie:
Rozwiązanie robocze:
Operator indeksu dolnego Groovy (
getAt
metoda) zwraca wartość null dla list, jeśli indeks jest większy niż rozmiar. Więc jeśli jest dziewiąty element, pozostanie taki sam jak posortowana lista, ale jeśli nie (szansa 1,99203187%) zostanie odwrócony. Jednak zawsze będzie pierwszy element, ponieważ rozmiar listy jest zawsze większy lub równy 5. Zatem 0 wa[0]
można zamienić na 1, 2, 3 lub 4.źródło
Wolfram Language (Mathematica) , 29 bajtów
Bonus ma 26,1 bajta, ale nie jestem do końca pewien, czy go zdobędę; na już posortowanym wejściu obie wersje zawsze dają posortowane wyjście.
Wersja wolna od błędów (29 bajtów)
Wypróbuj online!
Irytująca wersja (30 bajtów)
Wypróbuj online!
źródło
PHP, 70 bajtów
Wersja bez błędów, 70 bajtów
Wypróbuj online!
Wersja z błędami, 70 bajtów
Wypróbuj online!
Błędna wersja sortuje w odwrotnej kolejności przez 10% czasu (na podstawie generatora liczb losowych).
źródło
-r
(-2 bajty). dołącz podkreślnikiem; powinno to być równoważne (-2 bajty). użyjasort
zamiastsort
(-1 bajt).unset($argv[0]);(rand(1,9)?sort:rsort)($argv);echo join(_,$argv);
(także 65 bajtów)Python 2 , 26 bajtów
Powozik:
Wypróbuj online!
Wyjście poprzez modyfikację listy wejść . Sortuje listę tylko jeśli jego długość wynosi co najmniej 10. wersja non-buggy zastępuje
9
z0
zawsze porządek.Pracujący:
Wypróbuj online!
Możemy zmodyfikować funkcję, aby zwracała listę kosztem 4 bajtów, łącznie 30 bajtów:
Wypróbuj online!
25 bajtów z niektórymi fragmentami zasad:
Wypróbuj online!
Wysyła literał funkcji, który sortuje lub jest tożsamością, wykorzystując
id(0)
jako źródło losowe. Zmiana>
do>=
naprawienia, lub0
do~0
.źródło
Łuska , 6 bajtów
Wersja buggy:
Wypróbuj online!
Prawidłowa wersja:
Wypróbuj online!
Wyjaśnienie
Programy te są całkowicie deterministyczne. W rzeczywistości Husk nie ma obecnie żadnego wsparcia dla liczb losowych.
Twierdzę, że dane wyjściowe programu buggy nie są sortowane z prawdopodobieństwem między 1% a 2%. Oznacz przez N = 251 liczbę możliwych wartości elementów. Prawdopodobieństwo, że losowa lista długości L nie zawiera wielokrotności 9 wynosi ((NK) / N) ^ L , gdzie K jest liczbą wartości podzielnych przez 9 (w naszym przypadku K = 28 ). Całkowite prawdopodobieństwo jest średnią tego dla 5 ≤ L ≤ 255 , co stanowi około 1,98%. Niektóre z tych list są fałszywie pozytywne, ponieważ są już posortowane. Prawdopodobieństwo sortowania losowej listy długości L wynosi ((N + N * (N-1) / 2) / N ^ 2) ^ ⌊L / 2⌋ : jeśli podzielimy listę na kawałki długości 2, każdy zKawałki ⌊L / 2⌋ należy posortować. Całkowite prawdopodobieństwo sortowania listy jest ograniczone średnią z powyższych dla 5 ≤ L ≤ 255 , co stanowi około 0,30%. Zatem prawdopodobieństwo, że funkcja zwróci listę nieposortowaną, wynosi od 1,67% do 1,98%.
źródło
↓9
zamiast tegoV¦9
i skrócić go tylko9
do właściwej wersji? To spowodowałoby, że zawsze zawodzi przy krótkich wejściach i zawsze działa poprawnie na dłuższych, ale ponieważ długość wejściowa przebiega losowo, nadal powinna być poprawną odpowiedziąBash , 26 bajtów
Prawidłowa wersja
Wypróbuj online! lub sprawdź prawdopodobieństwa .
Wersja z błędami
Wypróbuj online! lub sprawdź prawdopodobieństwa .
Pobiera dane wejściowe jako liczby oddzielone znakiem nowej linii. Używa wbudowanej zmiennej
RANDOM
, która zawsze zwraca (pseudo) liczbę losową z zakresu 0 - 32767 . Korzystanie z%20
wyników w około 5% awaryjności (dzięki @Titus za wyjaśnienie problemów z%10
).Ta losowość oznacza, że wskaźnik awaryjności jest niezależny od danych wejściowych, ale wymaga to, aby tablica wejściowa zawierała co najmniej jedną liczbę z więcej niż jedną cyfrą, ponieważ dane wyjściowe awarii są sortowane leksykograficznie.
Alternatywna wersja, 27 bajtów
Wersja podsłuchu zastępuje
+
z%
. Wypróbuj online lub wypróbuj .źródło
%10
ma większą szansę powrotu0
do7
ponad8
lub9
, więc szansa na niepowodzenie jest powyżej 10%;)%20
tak jak twoja odpowiedź.Pyth , wynik 8 * 0,9 = 7,2
Pierwszy fragment (poprawny):
Wypróbuj tutaj!
Drugi fragment (poprawiony):
Wypróbuj tutaj!
Zaoszczędzono dwa bajty (i wynik 1,8) dzięki isaacg !
źródło
.S
zwrócenia danych wejściowych w niezmienionej postaci oznacza, że w tych (rzadkich) przypadkach nasze szanse na uzyskanie błędnej odpowiedzi spadają z 10% do 0% - czyli średnio nadal jest w odpowiednim zakresie. Oczywiście 10 kopii też jest w porządku..S
może również zwrócić dane wejściowe (co nie byłoby problemem), ale miałem na myśli,.S
że może również zwrócić posortowaną listę .O.uSNT.S
JavaScript (ES6), 24 bajty
Wersja bezbłędna (przynajmniej dla liczb całkowitych z zakresu 0-2147483647, więc wszystko z podanego zakresu):
Wersja buggy:
Zależy od a) algorytmu sortowania silnika ib) listy danych wejściowych zawierającej dwie wartości w niewłaściwej kolejności, które różnią się o 1. (Jeśli prawdopodobieństwo tego okaże się zbyt niskie, wówczas
1
można je zwiększyć, ale do czasu otrzymania do8
niego po prostu nie będzie niczego w zakresie sortowania5-255
).źródło
PHP, 62 bajty
zainspirowany rozwiązaniem Jo (i właśnie zauważyłem: to port Justina Marinera ):
działa (sortuje rosnąco):
buggy (ok. 5% szans na sortowanie malejące):
Biegnij z
-nr
źródło
Natarczywy , 9 bajtów - 10% = 8,1
Błędne rozwiązanie:
Wypróbuj online!
Rozwiązanie robocze:
Wypróbuj online!
Błędny kod wykonuje następujące czynności:
Naprawiony kod po prostu zmienia się
0
na1
. Jakrandom(1, 10)
nigdy nie będzie0
, instrukcja if nigdy nie zostanie wykonana.źródło
MATL ,
7 * 0,9 = 6,36 * 0,9 = 5,4 bajtówWersja buggy:
Wypróbuj online!
Wyjaśnienie:
Wersja wolna od błędów:
Wypróbuj online!
Wyjaśnienie:
źródło
Jq 1,5 , 42 bajty
Powozik
Działa (usuń =)
Zakładając, że długości linii są jednolite w zakresie [5,255] około 7% spowoduje błąd
Wypróbuj online!
źródło
J, 22,5 bajtów (25 bajtów - 10%)
z błędem:
bez błędów:
Wypróbuj online!
źródło
R , 30 * .9 = 27 bajtów
(powozik)
Wypróbuj online!
(nie ma błędów)
Wersja buggy sortuje się w
decreasing=T
10% przypadków, próbkując z równomiernego rozkładu (0,1). Wersja niezabudowana jest zawszedecreasing=F
źródło
Röda , 42 bajty - 10% = 37,8
Bez błędów:
Powozik:
Wypróbuj online!
Ta
currentTime
funkcja służy do tworzenia liczb losowych. Wygląda na to, że ich dystrybucja różni się nieco między komputerami. Współczynnik20//19
można dostosować, aby uzyskać różne wyniki bez kary bajtowej (chyba że jest mniejszy niż99//98
).źródło
Oktawa , 36 * 0,9 = 32,4 bajtów
Wersja buggy:
Wypróbuj online!
Wersja wolna od błędów:
Wypróbuj online!
To sortuje wektor, a następnie przesuwa wszystkie liczby o jeden w prawo, jeśli liczba losowa jest mniejsza niż 0,1.
źródło
Java 8,
4534,2 (5038–10%) bajtówWersja normalna:
Wyjaśnienie:
Wypróbuj tutaj.
Wersja z błędami (
5139 bajtów):LD z 1:
1
dodano.Wyjaśnienie:
Wypróbuj tutaj.
źródło
JavaScript, 25 * 0,9 = 22,5
wprowadź x
źródło