Jesteś użytkownikiem: Utwórz wymagania


15

Mój szef * nie rozumie, dlaczego jej programiści reagują negatywnie na użytkowników zmieniających wymagania programu. Pomóż jej zrozumieć! Przy każdej odpowiedzi utwórz nowe wymaganie. Następnie napisz program / funkcję, która rozwiązuje to wymaganie i wszystkie wcześniejsze wymagania, w nowym języku programowania.

Przykłady

Użytkownik 1 publikuje pierwszą odpowiedź. Określa, że ​​program musi wypisać „Witaj, świecie”. Tworzy program w Javie, który wyświetla „Witaj, świecie”.

Użytkownik 2 publikuje drugą odpowiedź. Określa, że ​​program musi zaakceptować wejście n i wyjście n- tej liczby pierwszej, aż do liczby w języku max. Tworzy program w C ++, który akceptuje wejście n i wypisuje n- tą liczbę pierwszą, a wypisuje „Cześć, świecie”. Nie mogła stworzyć programu w Javie.

Użytkownik 3 publikuje trzecią odpowiedź. Podaje, że źródło programu nie może zawierać tekstu „Cześć”. Tworzy funkcję w Pythonie, która akceptuje dane wejściowe n, a następnie generuje n- tą liczbę pierwszą i „Hello, World”. nie wykorzystując w swoim źródle tekstu „Cześć”. Nie mógł stworzyć programu w Javie lub C ++.

Format odpowiedzi

#Answer # - <language name> [version, if pertinent]

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Zasady odpowiedzi

  • Odpowiedź musi być zgodna z powyższym formatem lub podobnym.

  • Odpowiedzią może być program lub funkcja.

  • Odpowiedź musi spełniać wszystkie wymagania, aż do aktualnej odpowiedzi włącznie.

  • Ten sam użytkownik nie może opublikować dwóch odpowiedzi z rzędu.

  • Jeśli dwie odpowiedzi zostały opublikowane z tym samym numerem, jedna z późniejszych odpowiedzi powinna zostać usunięta.

  • Nie edytuj swojego wymagania, chyba że źle się popsułeś i nie opublikowano żadnych innych odpowiedzi.

  • Jeśli twoja odpowiedź jest niezgodna z twoją regułą i wszystkimi innymi regułami, jest nieważna. Spróbuj to naprawić, zanim ktoś inny opublikuje następną odpowiedź.

  • Różne wersje tego samego języka są liczone jako różne języki tylko wtedy, gdy program lub funkcja utworzona w jednej z wersji zachowuje się inaczej w innej wersji.

  • Odpowiedź może nie akceptować żadnych danych wejściowych, które nie są wymagane, i nie może generować niczego, co nie jest wymagane, z wyjątkiem koniecznych białych znaków. Jednak chociaż za kulisami program musi spełniać wszystkie „ukryte” (przed użytkownikiem) wymagania, może robić co tylko zechcesz, zwłaszcza jeśli musisz spełnić wymagania dotyczące czasu wykonania.

Zasady wymagań

  • Wymaganie musi określać tylko jedno wymaganie. Wymaganie to może być warunkowe, a jeśli wymaganie to wymaga danych wejściowych i / lub danych wyjściowych, można je uwzględnić.

  • Wymaganie nie może usuwać ani modyfikować wcześniejszych wymagań ani powodować konfliktów z nimi, ale może je rozszerzyć (określić, które).

  • Jeżeli wymóg ogranicza źródło ( ), lub wymaga tekst w źródle, może usunąć tylko jeden ciąg znaków (np 0, Hello) lub wymagają jednolitego charakteru.

  • Wymaganie nie może wymagać, aby źródło miało mniej niż 100 bajtów, nie wymagało określonego kodowania lub samo w sobie wykluczało większość popularnych języków.

  • Wymaganie może nie zmuszać źródła do zgodności z określonym wzorcem (na przykład rozpoczynanie każdej linii od określonego znaku lub (@Conor) mieszanie do określonej wartości) innej niż określona w ograniczonym źródle.

Jest to , więc wszystkie odpowiedzi bazują na poprzednich odpowiedziach. Ja i inni mogą postarać się zachować listę wszystkich wymagań. Aby wyświetlić odpowiedzi w kolejności, możesz sortować według najstarszych. Aby zobaczyć najnowszą odpowiedź, posortuj według najstarszych, a następnie przejdź do końca listy.

Jak wygrać (zmieniono na wstrzymanie głosowania):

Jeśli przez dwa tygodnie nie zostanie wysłana odpowiedź, wyzwanie się kończy, a wyniki zostaną obliczone. Wyniki zostaną obliczone poprzez zsumowanie łącznej liczby odpowiedzi każdego użytkownika, ale ważenie postów na podstawie tego, jak daleko są w łańcuchu (ponieważ późniejsze posty mają więcej wymagań, są trudniejsze).

Pseudo kod:

for each answer in user.Answers {
   score += 1 + (answer.number / 100)
}

Przykład:

Sally ma trzy odpowiedzi. Opublikowała odpowiedź 5, odpowiedź 7 i odpowiedź 20.

Jej wynik będzie 1.05 + 1.07 + 1.2 = 3.32. Gdyby to była prosta suma odpowiedzi, jej wynik wynosiłby 3, ale ważenie głębokości łańcucha nagradza trudniejsze odpowiedzi.

Zacząć:

Oto pierwszy wymóg, podany przez mojego szefa *:

Wymaganie 0: Program musi wypisać 0, zanim cokolwiek innego.

*powieściowy

Lista wymagań i języków

Pamiętaj, że może to być nieaktualne - spójrz na ostatnią opublikowaną odpowiedź bezpośrednio przed opublikowaniem odpowiedzi, aby upewnić się, że spełniasz wszystkie wymagania. Bardzo mi przykro, jeśli tworzysz znakomity program, tylko dla kogoś, kto go snipe - jeśli naprawdę naprawdę chcesz go opublikować, określ niekonkurujące.

Full (ale może nie prąd) Wymagania: Nie mogą zawierać 0, *lub ]w kodzie źródłowym, a nie można użyć złączenia na nowej linii wbudowanego polecenia. Wyprowadza 0, a następnie przyjmuje nieujemną liczbę całkowitą ni wypisuje nowy wiersz, po którym następuje indeks nFibonacciego o indeksie 0 (może być 1indeksowany), następnie znak nowej linii, następnie ten sam sygnał wejściowy n do kwadratu, a następnie znak nowej linii, a następnie npomnożony przez nowe dane wejściowe m, po których następuje nowa linia, po której 10^B, gdzie Bjest liczba bajtów w kodzie źródłowym, po której następuje nowa linia, po której następuje liczba pierwsza indeksu nth 0(może być także 1indeksowana), a następnie nowa linia, a następnie największy wspólny dzielnik ni im

0: Program musi wyjść 0przed czymkolwiek innym. Język: nie dotyczy
1: Źródło programu nie może zawierać 0. Język: 05AB1E
2: Program pobiera nieujemne liczby całkowite ni wyświetla nowy wiersz, po którym następuje 0-indeksowana n-ta liczba Fibonacciego (może być 1indeksowana). Język: dc
3: Program wypisuje nowy wiersz, po którym następuje takie samo wejście do nkwadratu. Język: J
4: Program wyświetla nowy wiersz, po którym następuje npomnożenie przez nowy wpis m. Język: Ohm
5: Program nie może zawierać *(kod ASCII 0x2A). Język: Python 3
6: Program wyświetla nowy wiersz, a po nim 10^B, gdzie Bjest liczba bajtów w kodzie źródłowym. Język: Mathematica
7: Program wysyła linią, przez nTH 0-indexed (może również być 1-indexed) liczbą pierwszą. Język: JavaScript (ES6)
8: Program nie używa wbudowanej funkcji dołączania do nowej linii, ale może korzystać z dowolnej innej wbudowanej funkcji łączenia. Język: Galaretka
9: Program wypisuje nowy wiersz, po którym następuje największy wspólny dzielnik n i m. Język: Scala
10: Program nie może zawierać ]. Język: Pyth

Aktualne wyniki (uporządkowane według pierwszego postu)

Okx : 1,01
R. Kap : 2,09
Conor O'Brien : 1,03
Nick Clifford : 1,04
Eric Rose : 1,05
Greg Martin : 1,06
Erik the Outgolfer : 2.18
math_junkie : 1.09


3
Po co przyjmować ostatnią odpowiedź? Wygląda na to, że wygrywasz, dodając wymaganie, którego nikt nie może spełnić.
xnor

5
Na przykład „skrót programu md5 musi być…”
Conor O'Brien

2
Nawet jeśli reguły utrzymują się, aby zapobiec wymaganiom kończącym łańcuch, nadal uważam, że „warunek wygranej” zachęca ludzi do ustanawiania prawie niemożliwych reguł, a nie do zabawy.
xnor

2
@StephenS Cóż, ludzie wydają się nie grać, aby wygrać, więc wygląda na to, że moje obawy są niewłaściwe.
xnor

2
Powinno to nazywać się „Scree Creep”
nieliniowe

Odpowiedzi:


2

Odpowiedź 10 - Pyth

Wymaganie: Pobiera dwa wejścia, n(> = 0) i m. Wyjścia 0 bez zastosowania 0, *lub ]gdziekolwiek w kodzie źródłowym, a bez builtins do łączenia na nowej linii. Następnie wypisuje nową linię, po której następuje 1-indeksowana n-ta liczba Fibonacciego (może być 0indeksowana), następnie nowa linia, następnie nkwadrat, następnie nowa linia, następnie npomnożona przez m, następnie nowa linia, po której 10^Bgdzie Bjest liczba bajtów w kodzie źródłowym, po której następuje nowa linia i nth 1-indexed (może być również 0-indexed) liczba pierwsza, a na końcu po nim nowa linia i największy wspólny dzielnik n i m.

JU2KE=H2VQ=+Js>2J=+YK=hHW!P_H=hH;jb[ZeJ^Q2sY^T51HiK

Tłumacz online


Tak, to także
gra w

Ponadto, zanim skomentuję, nie, nie mogę po prostu użyć jzamiast jb, ponieważ odtąd będę używać wbudowanego dołączania do nowej linii.
Erik the Outgolfer

6

Odpowiedź 1 - 05AB1E

Wymagania: Drukuje 0... bez 0kodu źródłowego

¾

4

Odpowiedź 3 - J

echo"+(1-1),(*:,~[:+/@:!&i.-)@".1!:1(3)

Wymagania: Wyprowadza dane 0bez 0kodu źródłowego, a następnie przyjmuje nieujemną liczbę całkowitą ni wypisuje nowy wiersz, po którym następuje 0-indeksowana nliczba Fibonacciego (może być 1indeksowana), a następnie nowy wiersz, po którym następuje to samo wejście do nkwadratu.

Wypróbuj online!


4

Odpowiedź 4 - Ohm

Wymagania: Wyprowadza dane 0bez 0kodu źródłowego, a następnie przyjmuje nieujemną liczbę całkowitą ni wypisuje nowy wiersz, po którym następuje indeks nFibonacciego o indeksie 0 (może być 1 indeksowany), po czym następuje znak nowej linii, po której następuje takie samo wejście n do kwadratu, po którym następuje nowa linia, a następnie npomnożona przez nową wartość wejściową m.

¼,≡ƒ,²,*,

4

Odpowiedź 2 - dc

12298P?sa1 1-sb1sc[lblcdsb+scla1-dsa1 1-<y]dsyxlcp

Wymagania: Wyprowadza dane 0bez 0kodu źródłowego, a następnie przyjmuje nieujemną liczbę całkowitą ni wypisuje nowy wiersz, po którym następuje 0-indeksowana n„liczba Fibonacciego” (może to być1 indeksowana).

Wypróbuj online!


@ R.Kap Nie ma problemu :)
Stephen

2
Kiedy przeczytałem nowy wymóg, z jakiegoś powodu zacząłem się śmiać. +1.
Towarzysz SparklePony,

4

Odpowiedź 5 - Python 3

Wymagania: Wyprowadza 0 bez 0 w kodzie źródłowym, a następnie przyjmuje nieujemną liczbę całkowitą wejściową n i wypisuje nową linię, po której następuje n-ta liczba Fibonacciego o indeksie 0 (może być 1 indeksowana), a następnie nowa linia, po której następuje to samo wejście n do kwadratu, po którym następuje nowa linia, a następnie n pomnożone przez nową wartość wejściową m. Nie używaj znaku *, kodu ASCII 0x2A.

    def f(n, m):
        print(1-1)
        a = 1-1
        b = 1
        for i in range(n):
            c = a+b
            a = b
            b = c
        print(b)
        print(n.__mul__(n))
        print(n.__mul__(m))

3

Odpowiedź 6 - Matematyka

Wymaganie: W kodzie źródłowym podaje 0 bez 0 lub *, a następnie przyjmuje nieujemną liczbę całkowitą i wprowadza nową linię, po której następuje n-ta liczba Fibonacciego o indeksie 0 (może być 1 indeksowana), a następnie nowa linia, po której następuje to samo wejście n do kwadratu, po którym następuje nowa linia, następnie n pomnożone przez nową wejściową m, po której następuje nowa linia, a następnie 10 ^ B, gdzie B jest liczbą bajtów w kodzie źródłowym.

((e=Echo)[1-1];e@Fibonacci@#;e[#^2];e[1##];2^# 5^#&@59)&

1
Tak, stąd moja pochopna edycja po tym, jak zobaczyłem, że EricRoe pobił mnie o minutę :)
Greg Martin

2

Odpowiedź 7 - JavaScript (ES6)

(a,b)=>String.fromCharCode(48)+'\n'+(m=(a)=>a>1?m(a-1)+m(a-2):1)(a)+'\n'+Math.pow(a,2)+'\n'+Math.exp(Math.log(a)+Math.log(b))+'\n'+1E257+'\n'+(T=(u,i=2,l=1-1,m=2)=>l<=u?(p=(o,z=2,s=1-1)=>z<o?p(o,z+1,s+(o%z<1&&z!=o)):s)(i)<1?T(u,i+1,l+1,i):T(u,i+1,l,m):m)(a)

Wymagania: Funkcja, która pobiera dwa dane wejściowe, nieujemną liczbę całkowitą ni dowolną liczbę mi zwraca ciąg znaków zawierający 0bez użycia 0nigdzie w kodzie źródłowym, a następnie znak nowej linii, po której następuje 0-indeksowana nliczba Fibonacciego (może być 1indeksowana), a następnie znak nowej linii, następnie nkwadrat, następnie znak nowej linii, następnie npomnożony przez mbez użycia *nigdzie w kodzie źródłowym, następnie znak nowej linii, następnie 10^Bgdzie Bjest liczba bajtów w kodzie źródłowym, a na końcu po nim nowa linia i nth 0-indexed (może być także 1-indexed) liczba pierwsza.

Test Snippet


Możesz zaoszczędzić znaczną ilość bajtów, zmieniając String.fromCharCode(48)na 1-1. Nie, żeby to naprawdę miało znaczenie ;-) (Ponadto w kodzie źródłowym są dwa zera, które można naprawić w ten sam sposób)
ETHproductions

1

Odpowiedź 8 - Galaretka

Wymagania: Funkcja, która pobiera dwa dane wejściowe, nieujemną liczbę całkowitą ni dowolną liczbę mi zwraca ciąg znaków zawierający 0bez użycia 0nigdzie w kodzie źródłowym, a następnie znak nowej linii, po której następuje 0-indeksowana nliczba Fibonacciego (może być 1indeksowana), a następnie znak nowej linii, następnie nkwadrat, następnie znak nowej linii, następnie npomnożony przez mbez użycia *nigdzie w kodzie źródłowym, następnie znak nowej linii, następnie 10^Bgdzie Bjest liczba bajtów w kodzie źródłowym, a na końcu po nim newline i nth 0-indexed (może być również1-indexed) liczba pierwsza. Żadne wbudowane funkcje dołączania do nowej linii nie są dozwolone, ale dołączanie wbudowanych opcji jest nadal dozwolone.

ÆḞṭØDW⁺¤;⁸²¤;×;ȷ25;⁸ÆN¤j⁷

Wypróbuj online!


Tak, to jest gra w golfa.
Erik the Outgolfer

1

Odpowiedź 9 - Scala

Wymagania : Przyjmuje dwa wejścia, n(> = 0) i m. Dane wyjściowe 0bez użycia 0lub w *dowolnym miejscu w kodzie źródłowym i bez wbudowanych funkcji dołączania do linii nowej. Następnie wypisuje znak nowej linii, po której następuje 1-indeksowana n-ta liczba Fibonacciego (może być 0indeksowana), następnie linia nowa, następnie nkwadrat, następnie linia nowa, następnie npomnożona przez m, następnie linia nowa, po której 10^Bgdzie Bjest liczba bajtów w kodzie źródłowym, po której następuje nowa linia i nth 1-indexed (może być również 0-indexed) liczba pierwsza, a na końcu po nim nowa linia i największy wspólny dzielnik n i m.

(n:Int,m:Int)=>{
 val z=1-1;val o=println _;var i=1;var j=z
 o(z)
 o((1 to n).foldLeft(z,1)((a,b)=>(a._2,a._1+a._2))._1)
 o(math.pow(n,2))
 o(List.fill(n)(m).sum)
 o(math.pow(9+1,299))
 while(j!=n){i+=1;if((2 to i-1)forall(i%_!=z))j+=1};o(i)
 o((1 to math.min(n,m)).filter(c=>n%c==z&&m%c==z).last)
}

Wypróbuj tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.