Brainfuck - 680
ทดสอบที่นี่: ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
อย่างที่ฉันสัญญาไว้นี่เป็นเวอร์ชั่นที่ดีกว่า สมองของฉันรู้สึกเหมือน .. โอ้แล้วนั่นคือที่มาของชื่อ
คำอธิบาย: (เพราะมันไม่สามารถรักษาได้และฉันไม่ต้องการที่จะลืมวิธีการทำงาน)
ก่อนอื่นคุณต้องเลือกเค้าโครงข้อมูลที่ดีที่สุดสำหรับความท้าทายนี้ ฉันมาด้วย
-4 outmost loop
-3 newline char
-2 space
-1 numbers
1 lowercase #1
2 lowercase #2
3 comma, apostrophe, period
4 condition (outmost loop < 3)
5 inner loop
6 second inner loop
เราต้องเชื่อว่าสิ่งนี้เหมาะสมที่สุดเว้นแต่จะมีการเปลี่ยนแปลงมากเกินไป (ซึ่งในกรณีนี้คุณต้องจัดเรียงเค้าโครงใหม่)
หลังจากนั้นฉันใช้ 4x9x3 loop เพื่อตั้งค่าเริ่มต้นสำหรับ newline, number, ตัวอักษรตัวพิมพ์เล็กสองตัวและเครื่องหมายจุลภาค (รหัส ASCII ขนาดเล็กทั้งหมดได้ 4x9 = 36 และตัวอักษรตัวเล็กสองตัวได้ 4x9x3 = 108 จากนั้นฉันเพิ่มและย่อบางส่วนเพื่อให้ได้มูลค่าจริง)
เมื่อเสร็จสิ้นการตั้งรหัสจะเข้าสู่วงรอบนอกสุดที่รอบ 3 ครั้ง ฉันอธิบายโดยใช้ pseudocode
for 3 to 1 where i = numbers
print '++i, '
while inner_loop != 0 # this is true after the first loop
while second_inner_loop != 0 # and this is true after the second
print '10, 11 o'clock, 12' # prints the difference
condition = 0 # it prevents the printing below
second_inner_loop += 1
inner_loop += 1
while condition != 0
print '++i, ++i o'clock, ++i'
print ' o'clock rock,\n'
เมื่อส่วนนี้เสร็จสิ้นฉันแค่ต้องพิมพ์บรรทัดสุดท้าย แต่เรามีตัวพิมพ์ใหญ่ W ที่ต้องสร้างโดยไม่ใช้อักขระมากเกินไป ณ จุดนี้เราอยู่ที่นี่:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
ดังนั้นฉันจึงใส่ [-3] 4 ครั้งไปที่ [-1] และ substract 3 เพื่อรับ 87 (W): >[>>++++<<-]>>---.
จากนั้นลบออก[-]
และย้าย [-2] ไปที่ตำแหน่งนี้ [-1] ดังนั้นพื้นที่จะอยู่ใกล้กับตัวอักษรตัวเล็ก<[>+<-]
หลังจากนั้นมันก็พิมพ์ตัวอักษร ตัวพิมพ์เล็ก # 1 สำหรับส่วนล่าง 97-107 และตัวพิมพ์เล็ก # 2 สำหรับภูมิภาคด้านบน