Spróbujmy jeszcze raz.
Celem tego konkursu jest stworzenie dwóch fragmentów kodu, które są wzajemnie anagramami (dwa muszą zawierać te same bajty w innej kolejności) i wykonają następujące zadania:
Trzeba sprawdzić, czy wprowadzona liczba jest szczęśliwa czy pierwsza , i wypisać, jeśli liczba jest albo (na przykład,
7
musi wypisaćhappy prime
i4
musi wypisaćsad non-prime
).Drugi musi wypisać swój rozmiar kodu w bajtach jako słowo (wyprowadziłby program 60-bajtowy, wyemitowałby program
sixty
39-bajtowythirty-nine
).
Jeśli potrzebne jest wyjaśnienie zasad, nie wahaj się mi powiedzieć.
To zawody w golfa kodu, więc wygrywa najkrótszy program!
code-golf
math
primes
source-layout
Josiah Winslow
źródło
źródło
/*program1*/program2
tegoprogram1/*program2*/
? Myślę, że powinieneś zabronić komentarzy.Odpowiedzi:
CJam,
804948 znakówAKTUALIZACJA : Inspirowana implementacją Dennisa do obliczania sumy kwadratów cyfr, oto krótsza wersja
Happy / Sad Prime / non-prime:
Jak to działa:
czterdzieści osiem
Jak to działa:
Wypróbuj online
Pierwszy program odczytuje numer ze STDIN
Moje oryginalne rozwiązanie z 80 postaciami
Happy / Sad Prime / non-prime:
osiemdziesiąt
źródło
CJam,
5049 bajtówTest szczęścia i pierwszeństwa
Odczytuje liczbę ze STDIN. Oba testy działają tylko dla 64-bitowych liczb całkowitych.
Wypróbuj online.
Własna długość
Wydruki za Tydzień dziewięć .
źródło
Golfscript - 81
Ten program sprawdza, czy liczba jest szczęśliwa i / lub pierwsza.
Ten program, anagram ostatniego, zwraca „osiemdziesiąt jeden” (jego bajt jest wielkością słowa).
To powinno służyć jako przykład.
źródło
J - 87 znak
Naiwna próba tego w J. Nie ma zastosowania standardowej biblioteki, choć wątpię, by przy jej użyciu byłaby krótsza.
Linia na górze to czasownik przyjmujący liczbę całkowitą i diagnozujący jej szczęście i pierwotność jako ciąg wyjściowy. Druga linia to wyrażenie zwracające ciąg znaków
eighty-seven
, a trzecia to stała funkcja, która robi to samo. Dołączyłem oba, ponieważ były one możliwe i ponieważ nie wiem, jakie będą rozstrzygnięcia w odpowiedziach funkcji w przeciwieństwie do odpowiedzi programowych, a J nie ma czegoś takiego jak funkcje bez argumentu - po prostu dajesz funkcji fałszywy argument.Tracimy większość znaków, sprawdzając szczęście.
(,[:+/@:*:,.&.":@{:)
jest głównym ciałem, które sumuje kwadraty cyfr liczby i(1-{:e.}:)
jest testem, czy ta liczba już się pojawiła.sad`happy{~1 e.
zamienia to w wynik słowny, a my dołączamy to z przodu łańcuchanon-prime
, potencjalnie usuwając cztery znaki, jeśli liczba rzeczywiście była liczbą pierwszą.Na anagramie po prostu ukrywamy wszystkie bity, które nie są
'eighty-seven'
w ciągu, który ignorujemy. Mógłbym zrobić lepiej, gdyby J miał więcej listów do ponownego wykorzystania, ale tak nie jest, więc cóż.źródło