W tym zadaniu możesz stworzyć przydatny program do robienia wszystkiego, co możesz napisać w ciągu 100 znaków. Możesz używać mniej znaków, ale nie więcej.
Zasady, aby chronić przed standardowymi lukami, które nie są już śmieszne:
Twój program nie może uzyskać dostępu do Internetu, chyba że naprawdę musi. Na przykład program, który pokazuje najczęściej zadawane pytania na tej stronie, może użyć Internetu, aby sprawdzić to pytanie. Jednak przeglądanie Internetu w celu znalezienia jego prawdziwego źródła i uruchomienia nie jest dozwolone.
Twój program nie może być tłumaczem języka, w którym został napisany. Jednak interpreter Brainfuck w języku innym niż Brainfuck byłby w porządku.
Twój program nie może wykonywać programów zewnętrznych, które robią dokładnie to samo, co program. Na przykład nie można uruchomić
vim
i twierdzić, że program jestvim
implementacją.Twój program nie może być niebezpieczny dla komputera, na którym jest uruchomiony, i innych komputerów. Nie możesz pisać programów takich jak
rmdir /
(przykład tutaj celowo nie działa, nie naprawiaj go) i twierdzisz, że jest to przydatny program do usuwania wszystkich plików z komputera.Twój program może być tak wolny, jak chcesz i zużywać tyle zasobów, ile chcesz, o ile możesz udowodnić, że robi to, co powinien.
Nie wolno tworzyć języka specjalnie do tego zadania. Jednak możesz zrobić tłumacza dla twojego wymyślonego języka w innym języku programowania.
źródło
Odpowiedzi:
C - 47 bajtów
Poniższy program generuje każdy dokument, jaki kiedykolwiek napisano w historii ludzkości, wraz z każdym dokumentem, który kiedykolwiek zostanie napisany, oraz mnóstwo ciekawych tekstów, których żaden człowiek nigdy nie wymyśli (wraz z „odrobiną śmieci” pomiędzy nimi). Daj mi trochę czasu. Co więcej, za każdym razem, gdy go uruchomisz, najpierw wyświetli inne teksty! Jeśli to nie jest przydatne! (A wszystko to w granicach połowy limitu znaków!)
Jeśli nie zależy ci na tym, aby za każdym razem generowało coś innego, potrzebujesz tylko 41 bajtów !
Niezupełnie zgodny z C99, ale kompiluje się płynnie
gcc.exe (GCC) 4.7.0 20111220
.Stan reguł
Nie ma problemu.
Niektóre rzeczy, ten program wyświetli:
Jak zauważa Dennis, losowość algorytmu można nieco poprawić (w ramach limitu znaków), używając
rand()^rand()>>16
zamiastrand()
.źródło
rand()
jest tylko pseudolosowym - nie może wygenerować żadnego przydatnego tekstu, zanim się zapętli.x
, maszx[i] == (x[i - 3] + x[i - 31] + c[i]) % 256
, gdziec[i]
jest 0 z prawdopodobieństwem 0,75 i 1 z prawdopodobieństwem 0,25. To prawie oznacza, że nie może wygenerować żadnej z wymienionych przez Ciebie rzeczy.rand()^rand()>>16
zamiast zwykłegorand()
. Jeśli szukasz sposobów oszczędzania na bajtach, usuńint
i%256
.unsigned char
po zapisaniu.BBC BASIC, 84 znaków
Rysuje rozwiązania równań różniczkowych pierwszego i drugiego rzędu.
Pobiera jako dane wejściowe użytkownika:
Zainspirowany oprogramowaniem do rozwiązywania równań różniczkowych o nazwie Polymath, którego użyłem podczas studiów jako inżynier chemik. Wprowadzamy różne równania dla reagentów i produktów i obserwujemy, jak zmieniał się cały system reakcji w czasie. Bardzo proste oprogramowanie (niewiele bardziej skomplikowane niż to), ale o wiele wygodniejsze w tym celu niż Excel. Niestety nie mogę wykonać pełnego klonu Polymatha na 100 znaków.
źródło
Mathematica 76
Ten program tworzy aplet, który wyświetla informacje dotyczące różnych właściwości dla dowolnego z 240 krajów. Otwiera się informacjami o dorosłej populacji Afganistanu. Użytkownik może zmienić ustawienia kraju i nieruchomości za pomocą list rozwijanych.
Mathematica współpracuje płynnie z WolframAlpha.
Z tego powodu uważam, że przesłanie spełnia wymaganie nr 1 wyzwania: „Twój program nie może uzyskać dostępu do Internetu, chyba że naprawdę musi ”.
Ten raczej skromny aplet wykorzystuje po prostu istniejącą funkcjonalność w języku Mathematica. Krótki film zawiera dodatkowe informacje na temat apletu.
Poniżej znajduje się lista pierwszych 20 (z 223) nieruchomości związanych z krajami. Dzięki dodatkowemu programowaniu można uzyskać dodatkowe informacje dotyczące krajów i analizować te informacje w Mathematica.
źródło
bash, 100 bajtów
Ten skrypt drukuje kryptograficznie bezpieczny strumień bajtów. Pobiera opcjonalny argument określający liczbę bajtów, które powinien wydrukować. Domyślnie wyjście będzie nieskończone.
Przydatne w przypadkach, gdy czytanie z
/dev/urandom
jest zbyt cholernie wolne.Reper
Ten skrypt generuje do 1,5 GiB na sekundę na moim i7-3770.
Natomiast czytanie z
/dev/urandom
generuje zaledwie 1 GiB na minutę .Jak to działa
head -c${1--1} /dev/zero
wyprowadza określoną liczbę bajtów zero. Jeśli nie określono żadnej wartości,${1--1}
równa się -1, a głowica generuje nieskończoną ilość.openssl enc -aes-128-ctr -pass file:/dev/random
używa AES-128 w trybie licznika do szyfrowania bajtów zerowych, odczytując hasło z/dev/random
.tail -c+17
pozbywa się 16-bajtowego nagłówka wyjścia.źródło
JavaScript
Rozwiąż dowolne równanie (cóż, nie wszystkie, ale powinno działać z typowymi funkcjami ...)
Bez ES6 (105 znaków):
Wystarczy podać lewą stronę równania, zakładając, że prawa strona jest równa zero.
Przykład:
r("x*x-9")
zwroty3
r("Math.sin(x)-1")
zwraca1.5707963394347828
(pi / 2)r("Math.pow(2,x)-512")
zwroty9
Ostrzeżenie: może się różnić w przypadku niektórych funkcji (lub jeśli nie ma rozwiązania) i zawiesić kartę przeglądarki lub zwrócić NaN.
źródło
C - 99 znaków
Ten program umożliwia szyfrowanie i deszyfrowanie dowolnego rodzaju danych.
Stosowanie
Najpierw ... skompiluj to!
Jeśli chcesz zaszyfrować zawartość
mypreciousdata.txt
kluczemmysecretkey
i zapisać wynik wmyprotecteddata.txt
:Teraz, jeśli chcesz odzyskać zdekodowaną zawartość
myprotecteddata.txt
:Im dłuższy klucz, tym bezpieczniej!
Wyjaśnienie
Poniżej znajdziesz rozwinięty i skomentowany kod:
źródło
char
typu (zwykle 256).GolfScript
Udało mi się wycisnąć to dokładnie na 100 znaków!
Pobiera wejście zaszyfrowanego tekstu ROT-n i wypisuje go w postaci zdekodowanej. (Zaczerpnięte stąd .) Na przykład, gdy podano dane wejściowe
pmttwxmwxtmwnxzwoziuuqvoxchhtmakwlmowtnabiksmfkpivom
, dane wyjściowe to8hellopeopleofprogrammingpuzzlescodegolfstackexchange
.źródło
JavaScript
Aby wygenerować unikalny identyfikator w javascriptProdukuje coś takiego:
'h9d2f4aniimma7h1d3pbffi0foi8d3mf'
ciągi 30–32 znaków alfanumerycznych
Produkuje coś takiego:
'uq2sze67hsacq5mi'
Sznurki o długości 14-16.
źródło
C ++ 57
Ten program pobiera znaki i wyświetla wartość ASCII.
źródło
,:
Fortran - 85 bajtów
Wczytuje liczbę i drukuje sumę cyfr . Przydatny w przypadku problemów z Project Euler .
źródło