ในความท้าทายนี้ผู้ใช้จะได้ทำภารกิจการเขียนโค้ดอย่างง่าย ๆ สามอย่างในภาษาการเขียนโปรแกรมที่ได้รับอนุญาตให้เก่าขึ้นเรื่อย ๆ
คำตอบแรกต้องใช้ภาษาการเขียนโปรแกรมที่เกิดขึ้นในปี 2558 เมื่อมีอย่างน้อยหนึ่งคำตอบจากภาษา 2015 คำตอบอาจใช้ภาษาการเขียนโปรแกรมที่ทำในปี 2014 ในทำนองเดียวกันคำตอบที่ใช้ภาษาจาก 2013 จะไม่ได้รับอนุญาต จนกว่าจะมีคำตอบอย่างน้อยหนึ่งคำตอบ 2014
โดยทั่วไปการใช้ภาษาการเขียนโปรแกรมจากปี Y ไม่ได้รับอนุญาตจนกว่าจะมีการส่งคำตอบโดยใช้ภาษาตั้งแต่ปี Y + 1 ข้อยกเว้นเพียงอย่างเดียวคือ Y = 2015
หาปีภาษาของคุณ
ในการตอบคำถามนี้คุณต้องรู้ว่าปีที่ภาษาการเขียนโปรแกรมของคุณ "ถูกสร้างขึ้น" แน่นอนว่าเป็นคำที่เป็นอัตวิสัย บางภาษาได้รับการพัฒนาในช่วงเวลาหลายปีและหลายภาษายังคงได้รับการอัพเกรดทุกปี ให้ปีที่ภาษา "ทำใน" เป็นปีแรกที่มีการใช้ภาษานั้นในที่สาธารณะ
ตัวอย่างเช่นPythonถูก "สร้างขึ้นในปี 1991 " แม้ว่าการพัฒนาจะเริ่มต้นตั้งแต่ปี 1989 และรุ่น 1.0 ยังไม่ได้เปิดตัวจนกว่าจะถึงปี 1994
หากปีนี้ยังคงเป็นอัตวิสัยเพียงใช้สามัญสำนึกของคุณเพื่อเลือกปีที่เหมาะสมที่สุด อย่าจมดิ่งลงในความไม่เห็นด้วยเล็กน้อยเกี่ยวกับตัวเลือกปี โปรดระบุลิงก์ไปยังแหล่งข้อมูลที่ระบุว่าเมื่อใดที่ภาษาของคุณถูกสร้างขึ้น
รุ่นหรือมาตรฐานที่แตกต่างกันของภาษาการเขียนโปรแกรม (เช่น Python 1, 2, 3) จะนับเป็นภาษาเดียวกันกับปีแรกเริ่มเดียวกัน
ดังนั้นหากปีภาษาของคุณคือปี 2558 คุณจะสามารถส่งคำตอบได้ก็ต่อเมื่อมีการส่งคำตอบซึ่งปีของภาษานั้นเป็นปีก่อนหน้าคุณ
หากคำตอบที่ถูกต้องในปีเดียวกับที่คุณมีอยู่แล้วคุณอาจตอบ ไม่สำคัญว่าภาษาของคุณจะพัฒนาเร็วกว่าหรือช้ากว่านี้ในปี
งาน
คุณต้องทำภารกิจ 1 ถึง 3 ให้เสร็จสิ้นภารกิจ 0 เป็นทางเลือก
งานเหล่านี้ได้รับการคัดเลือกมากขึ้นหรือน้อยลงเพื่อให้สอดคล้องกับลักษณะสำคัญสามประการของการโปรแกรมมิง: การให้เอาต์พุต (งาน 1), การวนซ้ำ (งาน 2) และการเรียกซ้ำ (งาน 3)
ภารกิจ 0 - ประวัติภาษา (ไม่บังคับ)
เขียนอย่างน้อยหนึ่งย่อหน้าเพื่ออธิบายประวัติของภาษาการเขียนโปรแกรมที่คุณเลือก: ใครเป็นผู้พัฒนามันทำไมอย่างไร ฯลฯ ได้รับการสนับสนุนเป็นพิเศษหากคุณอยู่ใกล้ ๆ เมื่อภาษานั้นเข้ามามีส่วนร่วมและอาจมีส่วนร่วมในการพัฒนา รู้สึกอิสระที่จะเชื่อมโยงเกร็ดเล็กเกร็ดน้อยส่วนตัวเกี่ยวกับผลกระทบของภาษาที่มีต่อคุณหรืองานของคุณหรืออะไรทำนองนั้น
หากคุณยังเด็กเกินไปที่จะรู้ประวัติความเป็นมาของภาษาของคุณโดยไม่ต้องค้นคว้ามากนักให้ทิ้งโน้ตไปยังผู้ใช้เก่าที่ระบุว่าพวกเขาสามารถแก้ไขโพสต์ของคุณและเพิ่มในประวัติมือแรกได้
ภารกิจที่ 1 - "สวัสดีโลก!" ตัวแปร
เขียนโปรแกรมที่พิมพ์
[language name] was made in [year made]!
ไปยังพื้นที่แสดงผลมาตรฐานของภาษาของคุณ (stdout สำหรับภาษาล่าสุด)
ตัวอย่างเช่นถ้าภาษาเป็น Python เอาต์พุตจะเป็น:
Python was made in 1991!
ภารกิจที่ 2 - ASCII Art N
เขียนโปรแกรมที่ช่วยให้ผู้ใช้ป้อนในจำนวนเต็มบวกคี่ (คุณอาจคิดการป้อนข้อมูลที่ถูกต้องอยู่เสมอ) และพิมพ์ออกจดหมายศิลปะ ASCII N N
ทำโดยใช้ตัวอักษรที่
หากอินพุตเป็น 1 เอาต์พุตจะเป็น:
N
หากอินพุตเป็น 3 เอาต์พุตจะเป็น:
N N
NNN
N N
หากอินพุตเป็น 5 เอาต์พุตจะเป็น:
N N
NN N
N N N
N NN
N N
หากอินพุตเป็น 7 เอาต์พุตจะเป็น:
N N
NN N
N N N
N N N
N N N
N NN
N N
รูปแบบยังคงดำเนินต่อไปเช่นนี้ ผลลัพธ์อาจมีช่องว่างต่อท้าย
งาน 3 - GCD
เขียนโปรแกรมที่ช่วยให้ผู้ใช้ป้อนในจำนวนเต็มบวก (คุณอาจคิดการป้อนข้อมูลที่ถูกต้องอยู่เสมอ) และพิมพ์ของพวกเขาตัวหารร่วมมาก นี่ถูกกำหนดให้เป็นจำนวนเต็มบวกที่ใหญ่ที่สุดที่หารทั้งสองตัวเลขโดยไม่เหลือส่วนที่เหลือ มันสามารถคำนวณได้อย่างง่ายดายโดยใช้ขั้นตอนวิธี Euclidean
ตัวอย่าง:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
คุณอาจใช้ฟังก์ชันที่มีอยู่แล้วภายใน แต่ลองค้นหาว่ามันมีอยู่ในภาษารุ่นแรกของคุณหรือไม่ ถ้าไม่ลองใช้มัน
กฎระเบียบ
- คุณอาจตอบได้หลายครั้ง แต่คำตอบใหม่แต่ละคำต้องใช้ภาษาที่ทำอย่างน้อย 5 ปีก่อนภาษานั้นในคำตอบสุดท้ายของคุณ ดังนั้นหากคุณตอบด้วยภาษาปี 2015 คุณจะไม่สามารถตอบได้อีกจนกว่าจะมีการอนุญาตให้ใช้ภาษาในปี 2010 หากคุณเริ่มต้นด้วยคำตอบของปี 2010 คุณจะไม่สามารถตอบคำตอบที่สองของคุณได้เพราะปี 2015 ไม่ใช่ก่อนปี 2010
- หากเป็นไปได้ให้เขียนรหัสของคุณเพื่อให้ทำงานได้ในภาษาแรกของคุณ (หรือเป็นรุ่นเก่าที่สุดเท่าที่จะเป็นไปได้) (นี่ไม่ใช่ข้อกำหนดเนื่องจากการค้นหาตัวแปลภาษา / ตัวแปลภาษาเก่าสำหรับบางภาษาอาจเป็นเรื่องยาก)
- หลีกเลี่ยงการโพสต์ภาษาที่โพสต์ไว้แล้วยกเว้นว่าคำตอบที่โพสต์นั้นมีข้อผิดพลาดที่สำคัญหรือคุณมีวิธีการทำงานที่แตกต่างกันมาก
- การตีกอล์ฟรหัสของคุณนั้นใช้ได้ แต่ไม่จำเป็น
- บรรทัดใหม่ต่อท้ายในเอาต์พุตของโปรแกรมใด ๆ นั้นใช้ได้
- สำหรับภารกิจ 2 และ 3 ค่าอินพุตทั้งหมดต่ำกว่าค่าสูงสุดที่เหมาะสมเช่น 2 16ควรใช้งานได้ (256 อย่างน้อยที่สุด)
- ภาษาของคุณต้องมีอยู่ก่อนที่จะโพสต์คำถามนี้
- ภาษาการเขียนโปรแกรมที่เก่ามากอาจมีรูปแบบการป้อนข้อมูลและผลลัพธ์ที่แตกต่างจากที่เราคิดในปัจจุบัน นี่เป็นเรื่องปกติ ทำงานให้ดีที่สุดเท่าที่จะทำได้ในบริบทของภาษาของคุณ
เกณฑ์การให้คะแนน
คะแนนที่คุณส่งคือ:
upvotes - downvotes + (2015 - languageYear) / 2
ดังนั้นจะมีการเพิ่มการนับคะแนน 0.5 ในทุก ๆ ปีก่อนปี 2558 ซึ่งเป็นข้อได้เปรียบสำหรับภาษาที่เก่ากว่า การส่งที่มีคะแนนสูงสุดจะเป็นผู้ชนะ
รายการคำตอบ
สแต็คส่วนย่อยด้านล่างแสดงคำตอบที่ถูกต้องทั้งหมดตามปีภาษาของพวกเขา
คุณต้องเริ่มโพสต์ด้วยบรรทัดMarkdownนี้เพื่อให้แน่ใจว่ารายการนั้นถูกต้อง:
#[year] - [language name]
ตัวอย่างเช่น:
#1991 - Python
ชื่อภาษาอาจอยู่ในลิงค์ (จะเป็นลิงค์เดียวกันในรายการคำตอบ):
#1991 - [Python](https://www.python.org/)
คำตอบที่ไม่เป็นไปตามรูปแบบนี้หรือมีปีที่ยังไม่ได้รับอนุญาตหรือมาจากผู้ใช้ที่ตอบแล้วในช่วง 5 ปีที่ผ่านมาถูกทำเครื่องหมายว่าไม่ถูกต้อง
<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>