Drugi zestaw narzędzi MacGyvera

16

W tym pytaniu każda odpowiedź otrzyma „zestaw narzędzi”, którego można użyć do skonstruowania programu / funkcji. Zestaw narzędzi będzie się składał z dwóch rzeczy:

  • lista języków programowania

  • lista prawidłowych znaków

Musisz napisać prawidłowy program / funkcję w jednym z dostarczonych języków, używając tylko znaków w przyborniku. Twój program / funkcja powinna wypisać liczbę odpowiedzi już obecnych na to pytanie.

Po napisaniu i opublikowaniu odpowiedzi użyty język i znaki zostaną usunięte z przybornika, a 1 nowy język i 8 nowych znaków zostaną losowo dodane w celu użycia jako przybornika dla następnej odpowiedzi.

Zasady

  • Każda odpowiedź będzie:

    • Podaj liczbę poprawnych odpowiedzi, które zostaną wyświetlone przed nim
    • Zawierają podzbiór znaków dostarczonych w przyborniku dla tej odpowiedzi. (powtórzenia są dozwolone)
    • Bądź w jednym z języków z dostarczonego zestawu narzędzi
  • Następny zestaw narzędzi zostanie określony przez ten program python. Aby wygenerować następny zestaw narzędzi, wprowadź pozostałe języki i znaki wraz z identyfikatorem postu ostatniej odpowiedzi.

  • Lista języków tutaj zawiera wszystkie języki dostępne na wypróbuj online w momencie tego postu. Znaki mają kody znaków 0-127.

  • Jako odpowiedź możesz napisać pełny program lub funkcję. Ponieważ REPL są różnymi językami, nie będą dozwolone. (użyj wersji TIO każdego języka)

  • Jeśli język używa specjalnego kodowania, znaki należy interpretować jako bajty (odkodowane z ASCII i uzupełnione zerami).

  • Przybornik startowy zostanie losowo przydzielony na podstawie tego posta id ( 128464 ), będzie 7 języków do uruchomienia, a ja dodam postacie echoprint0i ascii 0-31 za darmo, aby ludzie mogli zacząć.

  • Nie możesz odpowiadać dwa razy z rzędu

Punktacja

Za każdym razem, gdy osoba odpowie, otrzyma za nią liczbę punktów. Celem jest zdobycie jak największej liczby punktów. Aby uzyskać odpowiedź w języku X, otrzymasz tyle zwrotów, ile język X nie wykorzystał w przyborniku. Na przykład pierwsza osoba, która odpowie, otrzyma 1 punkt, ponieważ język został właśnie dodany do przybornika. Nie zawsze będzie koniec i nie będę przyjmować żadnych odpowiedzi.

Sportowy

To są zawody, ale zachęcam do postawienia zabawy ponad wygraną, pozostając konkurencyjnym (gdybym mógł sprawić, że kryteria wygranej byłyby „zabawne”, zrobiłbym to). Niektóre rzeczy, które nie są zabawne:

  • Celowo wykorzystując postacie, nie musisz stuntować przyszłych odpowiedzi.
  • Próba gry w system post id, aby utrudnić korzystanie z przyszłych skrzynek narzędziowych.
  • Próba gry w system identyfikatora postów w celu ułatwienia korzystania z przyszłych narzędzi.

Nie mogę powstrzymać nikogo przed zrobieniem tych rzeczy, ale będę głosować w dół za odpowiedziami, które podejrzewam, że to robią.

Mówiąc bardziej pozytywnie, oto kilka rzeczy, które są dobre w sporcie i zachęcane:

  • Koordynacja z innymi użytkownikami na czacie.
  • Zapisywanie znaków dla trudniejszych lub bardziej restrykcyjnych języków

To druga iteracja znalezionego tutaj wyzwania . Poprawia wiele problemów z pierwszym. Oto meta omawiający te pytania.

Post Rock Garf Hunter
źródło
Jaki jest pierwszy zestaw narzędzi?
CalculatorFeline
@CalculatorFeline Jest powiązany z pytaniem, jest obsadzony identyfikatorem pytania.
Post Rock Garf Hunter
1
@tuskiomi starsze i nowsze pytania są tworzone przez tę samą osobę, i należy zamknąć starsze pytania jako duplikaty nowych, lepszych pytań.
Stephen
2
@tuskiomi Największą różnicą jest liczba znaków dodawanych do piaskownicy za każdym razem. Wcześniej była 12, która szybko wymknęła się spod kontroli, co oznacza, że ​​praktycznie każda odpowiedź miała wszystkie ASCII. Obniżyłem go do 8, czyli średniej liczby znaków używanych przez wszystkie odpowiedzi w ostatniej wersji. Zgodziłbym się, że różnica w ziarnie i punktacji to drobne zmiany, ale zmniejszenie liczby postaci jest głównym powodem, dla którego zrobiłem drugą iterację.
Post Rock Garf Hunter
1
Jestem prawie pewien, że to niemożliwe. Programy Str wymagają ;(nie w przyborniku) do zrobienia czegokolwiek, gdy nie otrzymają żadnych danych wejściowych. Programy Condit i Tcl wymagają spacji (nie w toobox) jako części składni. Potrzeby programu (. Brain-Flak nie może działać z oczywistych powodów (jest tylko postać w przyborniku, którą rozumie )). Java 8 potrzebuje {(nie w przyborniku) deklaracji funkcji. To pozostawia tylko maksima, które moim zdaniem nie mogą wydrukować rzeczy bez „print” lub zadeklarować funkcję bez użycia nawiasów.
pppery

Odpowiedzi:

8

To jest niemożliwe

Przeglądając wszystkie języki w Langbox:

  1. Język programowania tcl składa się ze słów oddzielonych spacjami. Znak spacji nie znajduje się w przyborniku, więc nie można pisać prawidłowych programów.
  2. Programy Str domyślnie przekształcają dane wejściowe. Aby mogli zrobić wszystko, gdy nie otrzymali żadnych danych wejściowych, ;wymagany jest znak, którego nie ma w przyborniku.
  3. Jedynym sposobem na zrobienie czegokolwiek przez program w schemacie-chez jest wywołanie funkcji za pomocą nawiasów. Dlatego wszystkie programy schez-chez potrzebują (znaku, którego nie ma w przyborniku
  4. Programy Brain-Flak wymagają zrównoważonych nawiasów. Jedynym znakiem nawiasów w przyborniku jest ), więc żadne programy zawierające nawiasy symetryczne nie są możliwe.
  5. Podobnie do schematu, programy maxima wymagają nawiasów, aby cokolwiek zrobić.
  6. Programy Java wymagają sekwencji znaków {lub ->do deklarowania funkcji (a wszystkie pełne programy wymagają co najmniej jednej funkcji), z których żaden nie znajduje się w przyborniku.
  7. Programy Condit wymagają słowa when, które zawiera znak „e”, którego nie ma w przyborniku.

Dowody niemożliwości są dozwolone jako odpowiedzi

pppery
źródło