W tym wyzwaniu musisz rozwiązać 4 różne zadania przy użyciu tego samego zestawu znaków. Możesz zmieniać układ znaków, ale nie możesz dodawać ani usuwać znaków.
Zwycięzcą zostanie zgłoszenie, które rozwiązuje wszystkie zadania przy użyciu jak najmniejszej liczby znaków. Wszystkie zadania muszą być rozwiązane w tym samym języku.
Pamiętaj, że jest to najmniejsza liczba znaków, a nie najmniejsza liczba unikalnych znaków.
Zadanie 1:
Wyprowadzaj pierwsze N
liczby co trzecią liczbę zespoloną . Poniższy kod pokazuje pierwsze 19 liczb zespolonych w pierwszym rzędzie i co trzecią liczbę złożoną w wierszu poniżej.
4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30
4, 9, 14, 18, 22, 26, 30
Jeśli N=5
to wynik powinien być 4, 9, 14, 18, 22
. Musisz wspierać 1<=N<=50
.
Liczby złożone to liczby dodatnie, które nie są liczbami pierwszymi ani 1.
Wynik N=50
jest następujący:
4, 9, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 57, 62, 65, 69, 74, 77, 81, 85, 88, 92, 95, 99, 104, 108, 112, 116, 119, 122, 125, 129, 133, 136, 141, 144, 147, 152, 155, 159, 162, 166, 170, 174, 177, 182, 185, 188, 192
Zadanie 2:
Wyprowadź N-by-N
tabliczkę mnożenia. Musisz wspierać1<=N<=20
Przykład:
N = 4
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
Format wyjściowy jest opcjonalny, poniższe są wyjściowymi akceptowalnymi [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]]
.
Zadanie 3:
Sprawdź, czy liczba jest liczbą Fibonacciego . Musisz wspierać dodatni N
do domyślnego limitu liczb całkowitych swojego języka. Jeśli istnieją zarówno 32-bitowe liczby całkowite, jak i 64-bitowe liczby całkowite, możesz użyć tej, która wymaga najkrótszego kodu. Na przykład użyj int
zamiast, long int
jeśli masz wybór. Nie można wybrać mniejszych liczb całkowitych niż 32-bitowe, chyba że jest to ustawienie domyślne (nie można używać liczb całkowitych 8-bitowych, jeśli domyślny jest tryb 32-bitowy).
true/false
, false/true
, 1/0
, 1/-1
, a/b
Są akceptowalne wyjście tak długo jak to jest spójne.
Zadanie 4:
Weź N
jako dane wejściowe i wyjściowe wynik działania 1^1+2^2+3^3+...N^N
. Musisz wspierać 1<=N<=10
.
10 różnych wyników to:
1, 5, 32, 288, 3413, 50069, 873612, 17650828, 405071317, 10405071317
To jest golf golfowy , więc wygrywa najkrótsze zgłoszenie w każdym języku!
Ten fragment kodu pomoże sprawdzić twoje rozwiązanie. Mierzy minimalny zestaw znaków potrzebny do uwzględnienia wszystkich czterech rozwiązań i pokazuje pozostałe znaki.
źródło
Odpowiedzi:
Python,
8887 bajtówNie włożyłem zbyt wiele wysiłku w dzielenie się postaciami lub samymi golfami, to prawie na pewno zostanie pokonane.
źródło
range(11*n)
Zawsze będzie zawierać wystarczającą liczbę kompozytów?5*n
wystarczy.Galaretka ,
191817 znakówZadanie 1
Wypróbuj online!
Zadanie 2
Wypróbuj online!
Zadanie 3
Wypróbuj online!
Zadanie 4
Wypróbuj online!
Jak to działa
Każda linia w programie Jelly definiuje osobne łącze (funkcję). Ostatni jest głównym łączem i jest wywoływany automatycznie podczas wykonywania programu. O ile ten główny link w jakiś sposób nie odwołuje się do innych, nie mają one żadnego efektu. Pamiętaj, że nawet niesprawdzone łącza mogą nie zawierać błędów analizatora składni.
Zadanie 1
Zadanie 2
Ten jest trywialny:
×
jest to mnożenie atomu, a szybkieþ
(tabela) stosuje się×
do każdej kombinacji elementów w lewym i prawym argumencie. Jeśli argumentami są liczby całkowite (które tu są), to również rzutuje je na pierwszy zakres.Zadanie 3
Zadanie 4
źródło
ÆḞ
to się już przydaje!Mathematica, 60 znaków
Zadanie 1: Kompozyty
Zadanie 2: Tabliczka mnożenia
Zadanie 3: Fibonacciego
Zadanie 4: Suma mocy
Każde przesłanie jest zestawem wyrażeń, które są ignorowane, po których następuje nienazwana funkcja, która implementuje dane zadanie.
Napisałem prosty skrypt CJam, który „optymalnie” łączy surowe rozwiązania, przygotowując komentarz. Potem skończyło się na tym, że zaoszczędziłem trzy bajty, ręcznie pozbywając się każdego komentarza (co wymagało trochę przestawienia, aby uzyskać poprawną składnię w każdym przypadku). Skrypt znacznie ułatwił wypróbowanie prostych wariantów rozwiązań, aby sprawdzić, czy obniżyłyby ogólny wynik. Skorzystaj ze skryptu samodzielnie.
źródło
ab
iba
jako skrypty, da mi(**)ab
i(**)ba
zamiastab
iba
.(**)
sam mógłby zostać użyty do zakrycia niektórych znaków, jeśli byłyby użyte w innym programie.MATL ,
292826 znakówZadanie 1 (co trzeci numer złożony)
Wypróbuj online!
Zadanie 2 (tabliczka mnożenia)
Wypróbuj online!
Zadanie 3 (detektor Fibonacciego)
Wyświetla odpowiednio
1
/0
dla Fibonacciego / nie-Fibonacciego.Wypróbuj online!
Zadanie 4 (suma uprawnień)
Wypróbuj online!
Czek
Ten program wprowadza cztery ciągi i wyświetla je posortowane, aby wizualnie sprawdzić, czy używają tych samych znaków.
Objaśnienia
%
jest symbolem komentarza. Wszystko po jego prawej stronie jest ignorowane.Zadanie 1 (co trzeci numer złożony)
Zadanie 2 (tabliczka mnożenia)
Zadanie 3 (detektor Fibonacciego)
Zadanie 4 (suma uprawnień)
źródło
Hey MATL would be perfect for this!
mnie pobiłeś. +1Perl 6 , 61 bajtów
Drugi powraca,
((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))
gdy zostanie podany4
Perl 6 tak naprawdę nie ma maksymalnej liczby całkowitej, ale trzeci działa natychmiast z wejściem
15156039800290547036315704478931467953361427680642
. Jedynymi ograniczającymi czynnikami byłyby pamięć i czas.W przeciwnym razie wszystkie będą działać „natychmiast” dla danych wejściowych znacznie wykraczających poza to, co konieczne.
Wypróbuj online
źródło
JavaScript (ES6),
101100959391 bajtówEdycja: Zapisano 1 bajt, nie obsługując
0
jako liczby Fibonacciego. Zapisano 5 bajtów plus kolejne 2 bajty (1 dzięki @Arnauld) poprzez zmianę nazw zmiennych. Zapisane 2 bajty, przełączając+1
,++
i+=1
.źródło
c
zmiennejA
powinno zaoszczędzić jeden bajt.d
zy
, aled
nie jest zdefiniowana w obecnej wersji, więc prawdopodobnie chcesz, aby ustalić, że pierwszy)a
nam
.MATL , 30 znaków
Zestaw znaków, z którym poszedłem to:
Nie mogłem wygrać z drugą odpowiedzią MATL, ale dobrze się bawiłem wymyślając to rozwiązanie.
Zadanie 1:
Trzecie liczby zespolone.
Wypróbuj online!
Zadanie 2:
Tabliczka mnożenia. Zdecydowanie najłatwiejsze zadanie, ze względu na sposób działania MATL
Wypróbuj online!
Zadanie 3:
Tester Fibonacciego. Wyświetla dodatnią liczbę całkowitą (1 lub 2) dla prawdziwych danych wejściowych, a 0 dla danych fałszywych.
Wypróbuj online!
Zadanie 4:
Suma mocy
Wypróbuj online!
Później dokładniej wyjaśnię, ale na razie należy zauważyć, że
%
jest to znak komentarza, więc programy są naprawdę:źródło
PowerShell ,
9594 bajtów( TimmyD znów zjada mój bekon)
Zadanie 1:
Wypróbuj online!
Zadanie 2:
Wypróbuj online!
Zadanie 3:
Wypróbuj online!
Zadanie 4:
Wypróbuj online!
źródło
"$args"
zamiast$args[0]
jest genialna. Odtąd będę tego używał.;
z Zadania 4, manipulując obliczeniami,("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s)
aby zapisać kolejny ogólny bajt.Haskell ,
7776 znakówWypróbuj online!
--
rozpoczyna komentarz liniowy, więc wszystkie cztery programy mają formę<program>--<unused chars>
.Zadanie 1:
Najdłuższy program.
[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]
daje nieskończoną listę liczb zespolonych plus początek,1
który koryguje indeksowanie 0. Stosowanie:Zadanie 2:
Stosowanie:
Zadanie 3:
Zwraca
[0]
za prawdę i[]
za fałsz. Stosowanie:Zadanie 4:
Stosowanie:
źródło
05AB1E , 21 bajtów
Zadanie 1
Wypróbuj online!
Zadanie 2
Wypróbuj online!
Zadanie 3
Wypróbuj online!
Zadanie 4
Wypróbuj online!
Objaśnienia
Dla wszystkich zadań
q
kończy program, więc poniższy kod nigdy nie zostanie wykonany.Zadanie 1
To największy bajt-wieprz. Mała poprawka tutaj może przejść długą drogę.
Zadanie 2
Zadanie 3
Zadanie 4
źródło
Ruby,
83 82 8078 znakówUwaga: Detektor liczb Fibonacciego przy użyciu metody doskonałego kwadratu opisanej na Wikipedii: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers
źródło
'';
vs#