Bu zorlukla, kullanıcılar, sırayla daha yaşlı olmalarına izin verilen programlama dillerinde oldukça basit üç kodlama görevini yerine getireceklerdir.
İlk cevap 2015 yılında yapılan bir programlama dilini kullanmalıdır. 2015 dilinden en az bir cevap alındığında, cevaplar 2014 yılında yapılan programlama dillerini kullanabilir. en az bir 2014 cevabı bulunana kadar.
Genel olarak, Y yılından itibaren bir programlama dilinin kullanılması, Y + 1 yılından bir dil kullanılarak cevaplanıncaya kadar izin verilmez. Tek istisna Y = 2015.
Dilinizin Yılı Bulunması
Bu soruyu cevaplamak için, programlama dilinizin "yapıldığı" yılı bilmeniz gerekir. Bu elbette öznel bir terimdir; bazı diller, birkaç yıl boyunca geliştirilmiştir ve birçok dil hala her yıl yükseltilmektedir. Bir dilin "yapıldığı" yıl, genel olarak bu dil için bir uygulama ortaya çıkmış ilk yıl olsun.
Örneğin, Python 1991'de "yapımı" yapıldı , ancak 1989'dan bu yana gelişimi devam ediyordu ve sürüm 1.0 1994'e kadar piyasaya sürülmemişti.
Bu yıl hala öznel ise, en uygun yılı seçmek için sağduyunuzu kullanın. Yıl seçimleriyle ilgili ufak tefek kazalara boğulmayın. Lütfen, dilinizin ne zaman yapıldığını söyleyen bir kaynağa link verin.
Bir programlama dilinin farklı versiyonları veya standartları (örn. Python 1, 2, 3) aynı ilk yıl ile aynı dilde sayılır.
Bu nedenle, dilinizin 2015 yılı olmadığı sürece, cevabınızı ancak dilinin yılı sizinkinden önceki yıl olan bir cevap gönderildikten sonra gönderebilirsiniz.
Sizinkinin aynısı olan geçerli bir cevap varsa, cevap verebilirsiniz. Dilinizin yılın başında mı yoksa sonrasında mı geliştirildiği önemli değildir.
Görevler
Görev 1 ila 3'ü tamamlamanız gerekir. Görev 0 isteğe bağlıdır.
Bu görevler, programlamanın üç önemli yönüne karşılık gelmek üzere seçildi: çıktı sağlama (Görev 1), döngü (Görev 2) ve özyineleme (Görev 3).
Görev 0 - Dil Geçmişi (isteğe bağlı)
En azından seçtiğiniz programlama dilinin tarihini açıklayan bir paragraf yazın: kim geliştirdi, niçin, nasıl, vb. Dilin sizin veya işiniz üzerindeki etkisi veya bunun gibi şeyler hakkındaki kişisel anekdotları kullanmaktan çekinmeyin.
Çok fazla araştırma yapmadan dilinizin tarihi hakkında daha fazla bilgi edinmek için çok gençseniz, yazınızı düzenleyebileceklerini ve bazı ilk elden geçmişlerini ekleyebileceklerini söyleyen yaşlı kullanıcılara not bırakmayı düşünün.
Görev 1 - "Merhaba, Dünya!" varyant
Yazdıran bir program yazın
[language name] was made in [year made]!
Dilinizin standart çıktı alanına (en yeni diller için stdout).
Örneğin, dil Python olsaydı, çıktı şöyle olurdu:
Python was made in 1991!
Görev 2 - ASCII Art N
Kullanıcının tuhaf bir pozitif tamsayı girmesine izin veren bir program yazın (girişin her zaman geçerli olduğunu varsayabilirsiniz) ve karakteri kullanarak yapılan bir ASCII N harfi yazdırır N
.
Giriş 1 ise, çıkış:
N
Giriş 3 ise, çıkış:
N N
NNN
N N
Giriş 5 ise, çıkış:
N N
NN N
N N N
N NN
N N
Giriş 7 ise, çıkış:
N N
NN N
N N N
N N N
N N N
N NN
N N
Desen bu şekilde devam ediyor. Çıktı izleyen boşluklar içerebilir.
Görev 3 - GCD
Kullanıcının iki pozitif tamsayı girmesine izin veren bir program yazın (girişin her zaman geçerli olduğunu varsayabilirsiniz) ve en büyük ortak bölenlerini yazdırır . Bu, kalanları bırakmadan her iki sayıyı da bölen en büyük pozitif tamsayı olarak tanımlanır. Öklid algoritması kullanılarak kolayca hesaplanabilir .
Örnekler:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
Yerleşik bir işlev kullanabilirsiniz, ancak dilinizin ilk sürümünde olup olmadığını öğrenmeyi deneyin. Değilse, kullanmamaya çalışın.
kurallar
- Birden çok kez cevap verebilirsiniz, ancak her yeni cevap, son cevabınızda dilden en az 5 yıl önce yapılmış bir dil kullanmalıdır. Yani, bir 2015 diliyle cevap verdiyseniz, 2010 diline izin verilene kadar bir daha cevap veremezsiniz. Bir 2010 cevabıyla başlarsanız, ikinci cevabınızı bir 2015 cevabı yapamazsınız çünkü 2015 2010'dan önce değildir.
- Mümkünse, kodunuzu dilinizin ilk sürümünde (veya olabildiğince eski bir sürümde) çalışacak şekilde yazın. (Bu bir gereklilik değildir, çünkü bazı diller için eski derleyiciler / tercümanlar bulmak zor olabilir.)
- Gönderilen cevapta önemli hatalar olmadıkça veya görevleri tamamlama yolunuz çok farklıysa, zaten gönderilmiş bir dili yayınlamaktan kaçının.
- Kodunuzu golf oynamak iyi, ancak gerekli değil.
- Herhangi bir programın çıktısında izleyen bir satırsonu gayet iyi.
- Görev 2 ve 3 için, 2 16 gibi makul bir maksimumun altındaki tüm giriş değerleri çalışmalıdır (en azından 256).
- Bu soru gönderilmeden önce diliniz mevcut olmalı.
- Çok eski programlama dilleri, bugün düşündüğümüzden farklı girdi ve çıktı biçimlerine sahip olabilir. Bu iyi. Kendi dilinizde en iyi şekilde yeteneklerinizi tamamlayın.
puanlama
Gönderinizin puanı:
upvotes - downvotes + (2015 - languageYear) / 2
Böylece, 2015'ten önceki her yıl için oy sayısına 0.5 eklenir ve böylece eski dillere avantaj sağlanır. En yüksek puana sahip olan gönderim kazanır.
Cevap Listesi
Aşağıdaki Yığın Parçacığı, tüm geçerli cevapları dil yıllarına göre listeler.
Doğru listelenmesini sağlamak için yayınınızı bu Markdown satırıyla başlatmalısınız :
#[year] - [language name]
Örneğin:
#1991 - Python
Dil adı bir bağlantıda olabilir (cevap listesindeki bağlantı aynı olacaktır):
#1991 - [Python](https://www.python.org/)
Bu formata uymayan, henüz izin verilmeyen bir yıla sahip veya son 5 yıl içinde zaten cevaplanmış bir kullanıcıdan gelen cevaplar geçersiz olarak işaretlenmiştir.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>$(function(){function e(e,r){var a="https://api.stackexchange.com/2.2/questions/48476/answers?page="+e.toString()+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter=!YOKGPOBC5Yad160RQxGLP0r4rL";$.get(a,r)}function r(e){if(e.items.forEach(function(e){var r=e.link,a=e.owner.display_name,i=e.body.match(/<h1\b[^>]*>(\d{4}) - (.*?)<\/h1>/);if(i&&i.length>=3)var h=parseInt(i[1]),u=i[2];h&&u&&n>=h&&h>=t&&(!d.hasOwnProperty(e.owner.user_id)||d[e.owner.user_id]-h>=p)?(d[e.owner.user_id]=h,h==t&&--t,o.hasOwnProperty(h)||(o[h]=[]),o[h].push({language:u,user:a,link:r,score:e.score+(n-h)/2})):s.push(' <a href="'+r+'">'+a+"</a>")}),e.has_more)runQuery(++a,r);else{for(var i=n,h=[];o.hasOwnProperty(i);){for(var u=$("<tr>").append($("<td>").text(i.toString())),l=$("<td>"),c=$("<td>"),g=$("<td>"),f=0;f<o[i].length;f++){var v=o[i][f];l.append(v.language),c.append($("<a>").html(v.user).attr("href",v.link)),g.append(v.score),f+1<o[i].length&&(l.append("<br><br>"),c.append("<br><br>"),g.append("<br><br>"))}u.append(l).append(c).append(g),h.push(u),--i}$("#answers").find("tbody").append(h),s.length>0?$("#invalid").append(s):$("#invalid").remove()}}var a=1,n=2015,t=n-1,p=5,o={},s=[],d={};e(1,r)})</script><style>html *{font-family: Helvetica, Arial, sans-serif;}table{border: 4px solid #a4a; border-collapse: collapse;}th{background-color: #a4a; color: white; padding: 8px;}td{border: 1px solid #a4a; padding: 8px;}div{font-size: 75%;}</style><table id='answers'> <tr> <th>Year</th> <th>Language</th> <th>User (answer link)</th> <th>Score</th> </tr></table><div id='invalid'><br>Invalid Answers:</div>