Siz Kullanıcısınız: Gereksinimleri Yaratın


15

Patronum * programcılarının program gereksinimlerini değiştiren kullanıcılara neden olumsuz tepki verdiğini anlamıyor. Anlamasına yardım et! Her cevapta yeni bir gereksinim yaratın. Ardından, yeni bir programlama dilinde bu gereksinimi ve önceki tüm gereksinimleri çözen bir program / işlev yazın.

Örnekler

Kullanıcı 1 ilk cevabı yayınlar. Programın "Merhaba, Dünya" çıktısı alması gerektiğini belirtir. Java'da "Merhaba, Dünya" çıktısı veren bir program oluşturur.

Kullanıcı 2 ikinci cevabı yayınlar. O programı girişini kabul etmesi gerektiğini belirten n ve çıkış n inci yukarı dilin sayı maksimum asal. O girişini kabul eden C ++ bir program oluşturur n ve çıkışlar n inci asal ve çıkışları "Merhaba, Dünya." Java'da bir program oluşturamadı.

Kullanıcı 3 üçüncü yanıtı yayınlar. Program kaynağının "Merhaba" metnini içeremeyeceğini belirtir. Python'da n girişini kabul eden bir işlev oluşturur ve n. Birinci ve "Merhaba, Dünya" çıktılar . kaynağında "Merhaba" metnini kullanmaz. Java veya C ++ 'da bir program oluşturamazdı.

Yanıt Biçimi

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

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Yanıt Kuralları

  • Cevap yukarıdaki biçime veya benzeri bir biçime uygun olmalıdır.

  • Cevap bir program veya bir fonksiyon olabilir.

  • Cevap, mevcut cevap dahil ve bu cevap dahil tüm gereksinimleri karşılamalıdır.

  • Aynı kullanıcı arka arkaya iki cevap gönderemez.

  • Aynı numara ile iki cevap gönderilirse, daha sonra gönderilen cevap silinmelidir.

  • Kötü bir şekilde dağılmadıkça ve başka yanıt gönderilmedikçe gereksiniminizi düzenlemeyin .

  • Cevabınız kuralınıza ve diğer tüm kurallara uymuyorsa, geçersizdir. Birisi bir sonraki yanıtı göndermeden önce bunu düzeltmeyi deneyin.

  • Aynı dili farklı versiyonları sadece farklı dil olarak saymak eğer ikisinden biri sürümünde oluşturulan program veya fonksiyon başka versiyonunda farklı davranır.

  • Cevap, gerekli olmayan herhangi bir girdiyi kabul etmeyebilir ve gerekli boşluk haricinde gerekli olmayan hiçbir şeyi vermeyebilir. Ancak, sahne arkasında programın tüm "gizli" (kullanıcıdan) gereksinimlerini karşılaması gerekirken, özellikle de yürütme süresi gereksinimini yerine getirmeniz gerekiyorsa, istediğiniz her şeyi yapabilir.

Gereksinim Kuralları

  • Gereksinim yalnızca bir gereksinim belirtmelidir. Bu gereksinim koşullu olabilir ve bu gereksinim bir girdi ve / veya çıktı gerektiriyorsa, bu dahil edilebilir.

  • Bu gereksinim, önceki gereksinimleri kaldıramaz veya değiştiremez veya bunlarla çakışamaz, ancak bir gereksinimi uzatabilir (hangisini belirtebileceğiniz).

  • Gereksinim kaynağı ( ) veya metin gerektiriyorsa, yalnızca tek bir dize (örn 0. Hello) Kaldırabilir veya tek bir karakter gerektirebilir.

  • Bu gereksinim, kaynağın 100 baytın altında olmasını gerektiremez, belirli bir kodlama gerektirmez veya kendi başına ortak dillerin çoğunu dışlayabilir.

  • Gereksinim, kaynağı, kısıtlı kaynakta belirtilenin dışında, belirli bir desene (örneğin, her bir satırı belirli bir karakterle başlamaya veya (@Conor) belirli bir değere hash etmeye) uymaya zorlamayabilir.

Bu , bu yüzden tüm cevaplar önceki cevaplara dayanır. Ben ve belki de diğerleri tüm gereksinimlerin bir listesini tutmaya çalışacağız. Yanıtları sırayla görmek için en eskisine göre sıralayabilirsiniz. En yeni yanıtı görmek için, en eskisine göre sıralayın ve ardından listenin sonuna gidin.

Nasıl Kazanılır (bekletme oyu için değiştirildi):

İki hafta boyunca hiçbir cevap gönderilmediğinde, meydan okuma sona erer ve puanlar hesaplanır. Puanlar, her bir kullanıcının toplam cevap sayısını toplayarak hesaplanacaktır, ancak mesajların zincire ne kadar uzak olduklarına göre ağırlıklandırılması (daha sonraki yayınların daha fazla gereksinimi olduğundan, daha zordur).

pseudocode:

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

Misal:

Sally'nin üç cevabı var. Cevap 5, cevap 7 ve cevap 20'yi gönderdi.

Skoru olacak 1.05 + 1.07 + 1.2 = 3.32. Düzgün cevapların toplamı olsaydı, puanı 3 olurdu, ancak zincir derinliğinin ağırlığı daha zor cevapları ödüllendirir.

Başlamak:

İşte patronum tarafından verilen ilk gereklilik *:

Gereksinim 0: Program her şeyden önce 0 çıktı almalıdır.

* kurgusal

Gereksinimler ve Diller Listesi

Bunun eski olabileceğini unutmayın. Her gereksinimi yerine getirdiğinizden emin olmak için lütfen yanıtınızı göndermeden hemen önce son gönderilen cevaba bakın. Nefis bir program oluşturursanız çok üzgünüm, sadece birinin onu yakalaması için - gerçekten gerçekten göndermek istiyorsanız, rakipsiz belirtin.

Tam (ama belki şimdiki değil) Gereksinim: içeremez 0, *ya ]kaynak kodunda ve katılmak on satır yerleşiğini kullanamaz. Çıkışlar 0, daha sonra negatif olmayan bir tamsayı girişi alır nve bir yeni satır ve ardından 0 dizinli nth Fibonacci numarası ( 1endekslenebilir), ardından bir satırsonu, ardından aynı satırın n kare, ardından bir satırsonu ve ardından nçarpılır yeni bir giriş ile m, ardından bir yeni satır ardından, 10^B, Bardından bir yeni satır ardından kaynak kodu bayt sayısı, nth 0-indexed (aynı zamanda olabilir1 asal sayı -indexed), bir yeni satır, ardından ardından n ve m'nin En Büyük Ortak Böleni gelir.

0: Program 0her şeyden önce çıktı almalıdır . Dil: Yok
1: Program kaynağı içeremez 0. Dil: 05AB1E
2: Program, negatif olmayan bir tamsayı girişi alır nve 0-indexed n'üncü Fibonacci numarasını ( ardından 1dizine eklenebilir) izleyen bir yeni satır çıkarır . Dil: dc
3: Program bir satırsonu çıkarır ve ardından aynı giriş nkaresi gelir. Dil: J
4: Program bir satırsonu çıkarır ve bunu nyeni bir girdi ile çarpar m. Dil: Ohm
5: Program içeremez *(ASCII kodu 0x2A). Dil: Python 3
6: ardından bir satır çıkışları program 10^B, Bkaynak kodunda bayt sayısıdır. Dil: Mathematica
7: Bu program, ardından bir yeni satır çıktılar nth 0-indexed (aynı zamanda olabilir 1-indexed) asal sayı. Dil: JavaScript (ES6)
8: Program, new -join-on-line yerleşiklerini kullanmaz, ancak başka bir join yerleşikini kullanabilir. Dil: Jelly
9: Program yeni bir satır ve ardından n ve m'nin En Büyük Ortak Böleni çıkarır. Dil: Scala
10: Program içeremez ]. Dil: Pyth

Güncel Skorlar (ilk gönderiye göre sıralanmıştır)

Okx : 1.01
R. Kap : 2.09
Conor O'Brien : 1.03
Nick Clifford : 1.04
Eric Rose : 1.05
Greg Martin : 1.06
Outgolfer Erik : 2.18
math_junkie : 1.09


3
Son cevabı neden kabul etmeliyim? Bu, kimsenin karşılayamayacağı bir gereklilik ekleyerek kazandığınız gibi görünüyor.
xnor

5
Örneğin, "programın md5 karması olmalıdır ..."
Conor O'Brien

2
Kurallar zinciri sona erdiren bir gereksinimi önlemek için uygun olsa bile, hala bir "kazanma koşulu" na sahip olmak insanları eğlenceli olanlardan çok neredeyse imkansız kurallar yapmaya teşvik ediyor.
xnor

2
@StephenS Eh, insanlar kazanmak için oynamıyor gibi görünüyor, bu yüzden endişem yanlış yerleştirilmiş gibi görünüyor.
xnor

2
Buna 'Scope Creep'
NonlinearFruit

Yanıtlar:


2

Cevap 10 - Pyth

Gereksinim: İki giriş alır, n(> = 0) ve m. Çıkışlar 0 kullanılmadan 0, *veya ]kaynak kodunda her yerde ve satırbaşıyla üzerine katılma yerleşikleri olmadan. Daha sonra, ardından bir yeni satır verir 1(edilebilir -indexed inci Fibonacci sayısı 0, ardından bir yeni satır takip endeksli), nardından bir yeni satır takip karesi, nile çarpılır mve ardından bir yeni satır, ardından, 10^Bburada Bbayt sayısı kaynak kodu, bir yeni satır takip ve ninci 1(aynı zamanda olabilir -indexed 0-indexed) asal sayı, ve son olarak bir yeni satır ve n en büyük ortak bölen m takip eder.

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

Çevrimiçi tercüman


Evet, bu da golf oynuyor :-)
Outgolfer Erik

Ayrıca, yorum yapmadan önce, hayır, sadece jbunun yerine kullanamam jb, o zamandan beri yerleşik bir katılma çizgileri kullanacağım.
Outgolfer Erik

6

Yanıt 1 - 05AB1E

Gereksinim: Yazdırır 0... 0kaynak kodunda bir

¾

4

Cevap 3 - J

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

İhtiyaç Çıktıları 0olmayan 0kaynak kodu, daha sonra, negatif olmayan bir tam sayı girdi alır nve ardından bir yeni satır verir 0-indexed n(edilebilir 'inci Fibonacci sayısı 1endeksli), bir yeni satır, ardından aynı giriş ve ardından nkare.

Çevrimiçi deneyin!


4

Cevap 4 - Ohm

İhtiyaç Çıktıları 0olmayan 0kaynak kodu, daha sonra, negatif olmayan bir tam sayı girdi alır nve bir yeni satır 0 endeksli ardından çıkışları n(1 dizine edilebilir) Fibonacci sayısı inci, aynı giriş ve takiben n karesi, bir yeni satır ardından ardından bir satırsonu ve ardından yeni bir satır ile nçarpılır m.

¼,≡ƒ,²,*,

4

Cevap 2 - dc

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

İhtiyaç: Çıkışlar 0olmayan 0kaynak kodu, daha sonra, negatif olmayan bir tam sayı girdi alır nve ardından bir yeni satır ve çıkışlar 0-indexed n'inci Fibonacci numarası (edilebilir 1endeksli).

Çevrimiçi deneyin!


@ R.Kap Sorun değil :)
Stephen

2
Yeni şartı okuduğumda, nedense gülmeye başladım. +1.
SparklePony Yoldaş

4

Cevap 5 - Python 3

Gereksinimler: Kaynak kodunda 0 olmadan 0 çıktısı alır, ardından negatif olmayan bir tamsayı girişi n alır ve 0 satırlı n. n'nin karesi, ardından bir satırsonu, ardından n'nin yeni bir girdi m ile çarpımı. *ASCII kodu 0x2A karakterini kullanmayın .

    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

Cevap 6 - Mathematica

Gereksinim: Kaynak kodunda 0 veya * içermeyen çıkışlar, ardından negatif olmayan bir tamsayı girişi n alır ve 0 satırlı n. Fibonacci numarası (1 dizinli olabilir), ardından yeni satır, ardından yeni satır aynı girdi n'nin karesi, ardından bir satırsonu, ardından n'nin yeni bir m girdisi ile çarpılması, ardından bir satırsonu, ardından 10 ^ B, burada B kaynak kodundaki bayt sayısıdır.

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

1
Evet, bu yüzden EricRoe'nun bir dakika beni dövdüğünü gördükten sonra aceleyle düzenledim :)
Greg Martin

2

Cevap 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)

Gereksinim: iki giriş, bir negatif olmayan bir sayıyı alan bir fonksiyon nve herhangi bir sayı mve döner içeren bir dizge 0kullanılmadan 0göre kaynak kodu her yerde, daha sonra, yeni satır takip 0-indexed n(edilebilir inci Fibonacci sayı 1endeksli), ardından ardından bir satır ile ntakip sonrasında bir yeni satır kare, nile çarpılır mkullanılmadan *ardından sonrasında bir yeni satır kaynak kodunda her yerde, 10^BneredeB kaynak kodundaki bayt sayısı ve son olarak newline ve nth 0-indexed (ayrıca 1-indexed olabilir ) asal sayıdır.

Test Parçacığı


Sen değiştirerek bayt önemli miktarda kurtarabilecek String.fromCharCode(48)için 1-1. Gerçekten önemli değil ;-) (Ayrıca, kaynak kodda aynı şekilde düzeltebileceğiniz iki sıfır daha sonra var)
ETHproductions

1

Cevap 8 - Jöle

Gereksinim: iki giriş, bir negatif olmayan bir sayıyı alan bir fonksiyon nve herhangi bir sayı mve döner içeren bir dizge 0kullanılmadan 0göre kaynak kodu her yerde, daha sonra, yeni satır takip 0-indexed n(edilebilir inci Fibonacci sayı 1endeksli), ardından bir satırsonu, ardından nkare, bir satırsonu ve ardından kaynak kodunda herhangi bir yer kullanılmadan nçarpılarak bir satırsonu ve ardından -dizin) asal sayı gelir. Yeni satırlara katılmak için hiçbir yerleşik izin yok, ancak yerleşiklere katılmak için hala izin var.m*10^BB kaynak kodundaki bayt sayısı nerede ve son olarak newline ven th 0-indexed (ayrıca1

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

Çevrimiçi deneyin!


Evet bu golf oynamak.
Outgolfer Erik

1

Cevap 9 - Scala

Gereksinimler : İki giriş alır, n(> = 0) ve m. Kaynak kodunu 0kullanmadan 0veya *herhangi bir yerde kullanmadan ve yeni satırlara katılmak için yerleşik olmayan çıktılar . Daha sonra, ardından bir yeni satır verir 1(edilebilir -indexed inci Fibonacci sayısı 0, ardından bir yeni satır takip endeksli), nardından bir yeni satır takip karesi, nile çarpılır mve ardından bir yeni satır, ardından, 10^BburadaB bayt sayısı kaynak kodu, bir yeni satır takip ve ninci 1(aynı zamanda olabilir -indexed 0-indexed) asal sayı, ve son olarak bir yeni satır ve n en büyük ortak bölen m takip eder.

(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)
}

Burada deneyin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.