ปฏิทินศิลปะ ASCII


54

มาสร้างนาฬิกาและปฏิทิน ASCII ที่บอกเราเดือนปัจจุบันวันของเดือนวันในสัปดาห์ชั่วโมงนาทีและไม่ว่าจะเป็นกลางคืนหรือวัน (แต่ไม่ใช่ปีหรือวินาที)

เมื่อใดก็ตามที่ปฏิทินจะมีลักษณะดังนี้: (ดูดีขึ้นด้วยระยะห่างบรรทัดน้อยกว่า)

 ________________________________________________________________
|\ ____________________________________________________________ /|
| |                  ___                                       | |
| |                _(   )                                      | |
| |               (___)__)           -.-                       | |
| |                                                            | |
| |                                                            | |
| |      -.-                                                   | |
| |         -.-                                                | |
| |                     ___                                    | |
| |                   _(   )                                   | |
| |                  (___)__)                                  | |
| |                                                            | |
| |                                          ___               | |
| |                                        _(   )              | |
| |    _                                  (___)__)             | |
| |   /|\                                                      | |
| |  / | \                                                     | |
| | /__|__\                                                    | |
| |____|____                                                   | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|

มันเป็น "กรอบรูป" 66 อักขระ 23 ตัวซึ่งเส้นขอบไม่เคยเปลี่ยนแปลง

ภาพภายในเฟรมบอกเราเวลาและวันที่:

  • ในระหว่างวัน (6:00 น. - 17.55 น.) เดือนจะถูกกำหนดโดยจำนวนนก ( -.-) ในท้องฟ้า มกราคม = 1 นก, กุมภาพันธ์ = 2 นก ฯลฯ
  • ในช่วงคืน (18:00-05:59) นกจะถูกแทนที่ด้วย 3 ครั้งดาวเป็นจำนวนมาก ( *) มกราคม = 3 ดาวกุมภาพันธ์ = 6 ดาว ฯลฯ นกและดวงดาวไม่เคยอยู่บนท้องฟ้าในเวลาเดียวกัน
  • วันของเดือนจะถูกกำหนดโดยจำนวนตัวอักษรระหว่างสองขีดกลาง ( -) บนน้ำ เช่น~~-~~~~-~~หมายความว่าเป็นวันที่สี่ของเดือน ขึ้นอยู่กับนาทีเรืออาจต้องอยู่ระหว่างขีดกลาง (ขีดกลางไม่วนรอบ)
  • วันของสัปดาห์จะถูกกำหนดโดยจำนวนของเมฆในท้องฟ้า (เมฆทั้งหมดเหมือนกัน) วันอาทิตย์ = 0 เมฆ , วันจันทร์ = 1 เมฆ, ... , วันเสาร์ = 6 เมฆ
  • ชั่วโมงจะถูกกำหนดโดยระดับน้ำ (และเรือ) ที่ต่ำที่สุด (ดังกล่าวข้างต้น) คือ 1 นาฬิการะหว่าง 2 นาฬิกาจะมีหนึ่งตัวอักษรที่สูงขึ้นและสูงถึง 12 นาฬิกาจากนั้นกลับไปที่ 1 นาฬิกา (มันคือ 12 ไม่ใช่นาฬิกา 24 ชั่วโมง)
  • นาทีจะถูกกำหนดโดยตำแหน่งแนวนอนของเรือ ที่ด้านบนของชั่วโมงเรือที่สัมผัสขอบซ้ายของกรอบ (ดังกล่าวข้างต้น) ในแต่ละนาทีต่อมาเรือจะแล่นไปทีละตัวละคร ในนาทีที่ 51 ถึง 59 มันวนซ้ำจากด้านขวาของกรอบกลับไปทางซ้าย

ดังนั้นจากตัวอย่างข้างต้นมีนก 3 ตัวเมฆ 3 ตัว 2 ตัวระหว่างขีดกลางน้ำที่ระดับต่ำสุดและเรือที่อยู่ทางด้านซ้ายสุดเราสามารถบอกได้ว่าวันนี้คือวันพุธที่ 2 มีนาคมและเวลาคือ 1: 12:00

นี่เป็นอีกตัวอย่างจากวันอาทิตย์ที่ 25 เมษายนเวลา 3:58 น.:

 ________________________________________________________________
|\ ____________________________________________________________ /|
| |                                                            | |
| |                                                     * *    | |
| |                            *       *                 *     | |
| |               *                                            | |
| |                                                            | |
| |                           *                                | |
| |         *                      *                           | |
| |                                                            | |
| |                                 *                          | |
| |                                                            | |
| |                                 *                          | |
| |  _                                                         | |
| | /|\                          *                             | |
| |/ | \                                                       | |
| |__|__\                                                     /| |
| |__|____                                                   __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| |                                                            | |
| |                                                            | |
| |____________________________________________________________| |
|/______________________________________________________________\|

เป้าหมาย

เป้าหมายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดเท่าที่จะเป็นไปได้ซึ่งส่งออก ASCII art "calendars" เหล่านี้ไปยัง stdout โดยใช้เวลาที่โปรแกรมทำงาน

การรันของโปรแกรมทุกครั้งควรแสดงผลหนึ่งครั้ง การอัปเดตไม่ควรเป็นไปโดยอัตโนมัติ (หรือเคลื่อนไหว)

เมฆดวงดาวและนกควรถูกสุ่มวางบนท้องฟ้า (ดังนั้นการวิ่งทุกครั้งแม้ในเวลาเดียวกันอาจแตกต่างกัน) พวกเขาไม่ควรทับซ้อนเรือหรือกันและกัน (ด้วยเครื่องหมายขีดกลางของน้ำไม่ควรทับซ้อนกันกับตัวเรือ)

โปรดสังเกตว่าไม่มีสิ่งใดที่ฉันอธิบายได้ปรากฏใต้น้ำ นี่สำหรับคุณที่จะทำ ในช่วงเวลาหนึ่งชั่วโมงที่กำหนดไว้ล่วงหน้าของทุกสัปดาห์ (ตัวเลือกของคุณ) สิ่งที่น่าสนใจควรวาดลงไปใต้น้ำ อาจเป็นสัตว์ทะเลหรือเรือที่จมน้ำหรืออะไรก็ได้แล้วแต่คุณ ในช่วงเวลานั้นคุณอาจปรับเปลี่ยนการออกแบบของส่วนที่เหลือของฉาก (อยู่ในขอบเขตกรอบ)

เกณฑ์การให้คะแนน

นี่คือคำสั่งผสมการแข่งขันรหัสความนิยมกอล์ฟ

(bytes in program) - 4 * (upvotes - downvotes)คะแนนของคุณคือ คะแนนต่ำสุดชนะ

ใช้http://mothereff.in/byte-counterเป็นตัวนับไบต์หากคุณใช้อักขระที่ไม่ใช่ ASCII

หมายเหตุและการปรับปรุง

  • คุณสามารถใช้ทุ่นแทนเส้นประได้เพราะให้หันหน้าเข้าหากันเพราะมันเหมาะสมกว่า:

       |     |
    ~~(_)~~~(_)~~ (3rd of the month)
    
  • เครื่องหมายขีดคั่น (หรือทุ่น) ไม่จำเป็นต้องมีการสุ่ม แต่มันจะดีถ้าพวกเขา

  • "ชั่วโมงพิเศษ" ของคุณควรใช้เวลา 60 นาทีจากด้านบนของชั่วโมงถึง 1 นาทีก่อนถึงชั่วโมงถัดไป
  • ในช่วงเวลาพิเศษสิ่งที่คุณวาดใต้น้ำอาจเคลื่อนไหวและอาจเปลี่ยนพื้นผิวและท้องฟ้าเมื่อมันสมเหตุสมผล (เช่นสัตว์ประหลาดในทะเลที่กำลังกินเรือหลุมดำที่ก่อตัวขึ้นที่พื้นทะเล ฯลฯ )

21
เราผิดไหมที่จะเริ่ม downvoting คำถาม / คำตอบทั้งหมดของคุณจนกว่าคุณจะอายุต่ำกว่า 4k เพื่อให้คุณสามารถโพสต์คำถามที่ยอดเยี่ยมต่อไปได้
Kyle Kanos

4
ดูเหมือนว่าบางสิ่งที่ Cold War ใช้สอดแนมเพื่อสื่อสารเวลาการประชุมอย่างลับ ๆ
NinjaBearMonkey

3
ทำไมไม่ทุ่นสองอันแทนที่จะเป็นเครื่องหมายขีดกลาง? พวกเขาจะมองเห็นได้ชัดเจนขึ้นและออกนอกสถานที่น้อยลง :) "|> \ n ~ (_) ~ \ n °"
Quentin

4
1. ได้โปรดทิ้งความคิดที่เกินไว้ในกล่องทราย
trichoplax

7
2. ทุกครั้งให้ถอยกลับโดยไม่คาดคิดเหมือนสิ่งมีชีวิตในตำนาน
trichoplax

คำตอบ:


21

Ruby ที่ส่วนท้ายของโลก1260 1070 967 ไบต์

ใครจำได้ว่าภาพยนตร์ Pirates of the Caribbean?

c=("   #{?_*60}   
")*2
c+="| |#{' '*60}| |
"*19+c
[67,132,-2,-66,-67,-69,-71,-132,-134].map{|i|c[i]=?|}
a=c[68]=c[-3]=?\\
e=c[131]=c[-66]=?/
[1,2,-4,-65,63,64].map{|i|c[i]=?_}
t=Time.now
w,_,n,l,d,m=t.wday,*t.to_a
p=l>11
q=(l-1)%12+1
h=(20-(l-1)%12)*67+3
c[h,60]=?~*60
f=(n+9)%60
f=f+d>58?n>d+2?0:n-12:f
c[h+f]=c[h+f+d+1]=?-
s=l==18&&w==0
z=->s{s.chars.map(&:to_i)}
b={?_=>z['5410110125'+g='020304050607121315161718222326'],e=>z['08213243'],a=>z['00273645'],?|=>z['14243444'],?#=>[3,3,3,5]}
b={?_=>z[g+'272855140824'].map{|i|i-1},a=>b[e],e=>b[a],?|=>z['142434']}if s
b.each{|k,v|v.each_slice(2){|j,i|c[h-67*j*(s ?-1:1)+(i+n)%60]=k}}
r=->(m,t){k=0
(x=rand(53)
y=rand(19-q)
m.values.flatten.each_slice(2).any?{|j,i|c[h-(y+j)*67+i+x]!=' '}? next: m.each{|k,v|v.each_slice(2){|j,i|c[h-(y+j)*67+i+x]=k}}
k+=1)while k<t}
r[{?(=>[1,0,2,2],?)=>z['141726'],?_=>z['111213151621333435'],?#=>z['232425']},w]
r[l>5&&l<18?{?-=>[1,0,1,2],?.=>[1,1]}:{?*=>[1,0]},m]
puts c.tr(?#,' ')

ยังคงมีพื้นที่มากมายสำหรับการปรับปรุงสนามกอล์ฟ แต่ก็เป็นการเริ่มต้น

ตอนนี้มีอะไรอ้างอิงภาพยนตร์? เห็นได้ชัดว่า Green Flash เกิดขึ้นบ่อยกว่า Jack Sparrow ต้องการให้เราเชื่อ ในความเป็นจริงมันเกิดขึ้นประมาณสัปดาห์ละครั้งแทนทุก ๆ สิบปี ทุกวันอาทิตย์ตอนพระอาทิตย์ตกดินทับทิมดำ (ชั่วโมง) ทำหนึ่งรอบในดินแดนแห่งความตาย:

 ________________________________________________________________
|\ ____________________________________________________________ /|
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| | *                          *                       *       | |
| |                     *                            *         | |
| |         *  *                  *             _______        | |
| |-~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/_______\~~~~~~~| |
| |                                             ___|___        | |
| |                                             \  |  /        | |
| |                                              \ | /         | |
| |                                               \_/          | |
| |                                                            | |
| |____________________________________________________________| |
|/______________________________________________________________\|

13

Java - Cute Kraken (จำนวนมากไบต์)

แก้ไข: การปรับปรุงเพิ่มเติมสำหรับนก / ดาวนำขึ้นด้านบนและเมฆตอนนี้ปฏิทินที่ยุ่งที่สุด (12:00, เสาร์, ธันวาคม) ทำงานประมาณ 70% ของเวลา อีก 30% ฉันได้รับข้อผิดพลาด Stack Overflow (เตรียมพร้อมสำหรับสิ่งนี้) เพราะฉันใช้การสอบถามซ้ำ ภาพใหม่ของปฏิทินที่คึกคักที่สุดและรูป Kraken ใหม่ซึ่งแสดงให้เห็นถึงความสูง / ต่ำของดาว / เมฆ

ตอนนี้จัดการกับสถานการณ์ที่การกระจัดกระจายของดวงดาว / นกแบบสุ่มช่วยป้องกันการแทรกของเมฆแบบสุ่ม เมื่อสิ่งต่าง ๆ แออัดเกินไปและมันไม่ทำงานหลังจากลองไปแล้ว 200 ครั้งเราจะทำดาว / นกอีกครั้งด้วยความหวังว่าการกำหนดค่าครั้งต่อไปจะช่วยให้เมฆมีพื้นที่ส่วนบุคคล

ใครเป็นคนน่ารักที่เปราะบาง ใครเป็นคนน่ารักที่เปราะบาง คุณคือ! คุณคือ!

การแก้ไขเล็กน้อยยังไม่มีการเล่นกอล์ฟ Kwaken ปรากฏตัวในรายการ 9s เพราะเขารู้ว่าทุกคนคาดหวังเขาในเวลาเที่ยงคืน ตอนนี้เขาตัวเล็กและขี้อาย แต่วันหนึ่งเขาหวังจะกินเรือ

เมฆมีแนวโน้มที่จะต่ำในท้องฟ้าในขณะที่ดาวและนกชอบบินเหนือพวกเขา สิ่งต่าง ๆ มักจะแออัดไปประมาณ 8 โมงเช้า

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class TimeFlies
{
   static char[][] frame = new char[23][66];
   static char[] bird = new char[] {'-', '.', '-'};
   static char[][] boat = new char[][]{
   {' ', ' ', ' ', ' ', '_', ' ', ' ', ' ', ' '}, 
   {' ', ' ', ' ', '/', '|', '\\', ' ', ' ', ' '},
   {' ', ' ', '/', ' ', '|', ' ', '\\', ' ', ' '},
   {' ', '/', '_', '_', '|', '_', '_', '\\', ' '},
   {'_', '_', '_', '_', '|', '_', '_', '_', '_'},
   {'\\', '_', '_', '_', '_', '_', '_', '_', '/'},
   };
   static char[][] cloud = new char[][]{
   {' ', ' ', ' ', '_', '_', '_', ' ', ' '},
   {' ', '_', '(', ' ', ' ', ' ', ')', ' '},
   {'(', '_', '_', '_', ')', '_', '_', ')'},
   };
   static char[][] kraken = new char[][]{
   {' ', ' ', ' ', '_', '_', '_', '_', '_', '_', '_', '_', ' ', ' ', ' ', ' '},
   {' ', ' ', '/', ' ', ' ', '_', ' ', ' ', ' ', '_', ' ', '\\', ' ', ' ', ' '},
   {' ', '|', ' ', ' ', '|', '_', '|', ' ', '|', '_', '|', ' ', '|', ' ', ' '},
   {' ', ' ', '\\', '_', '_', '_', '\\', ' ', '/', '_', '_', '/', ' ', ' ', ' '},
   {' ', ' ', ' ', '/', '|', ' ', '|', ' ', '|', ' ', '|', '\\', ' ', ' ', ' '},
   {'_', '_', '/', ' ', '|', ' ', '|', ' ', '|', ' ', '|', ' ', '\\', '_', '_'},
   {' ', ' ', '_', '/', ' ', ' ', '|', ' ', '|', ' ', ' ', '\\', '_', ' ', ' '},
   {' ', ' ', ' ', ' ', ' ', '/', ' ', ' ', ' ', '\\', ' ', ' ', ' ', ' ', ' '}}; 

   static int day, month, hours, minutes, weekday, attempts = 0;
   static boolean isFirstTime, birds = true;
   static String timeStamp;

   public static void main()
   {
       timeStamp = new SimpleDateFormat("MMddHHmm").format(Calendar.getInstance().getTime());
       isFirstTime = true;
       retry();
   }

   public static void retry()
   {

       day = Integer.parseInt(timeStamp.substring(2, 4));
       month = Integer.parseInt(timeStamp.substring(0, 2));
       hours = Integer.parseInt(timeStamp.substring(4, 6));
       minutes = Integer.parseInt(timeStamp.substring(6, 8));

       Calendar c = Calendar.getInstance();
       c.set(2014, month, day);
       weekday = c.get(Calendar.DAY_OF_WEEK) - 1; 

       int timeTemp = hours*60 + minutes;
       if(timeTemp < 360 || timeTemp > 1080)
       {
           birds = false;
           month *= 3;
       }
       if(hours > 12) 
           hours -= 12;
       initiateFrame();

       if(isFirstTime)
       {
           printFrame();
           isFirstTime = false;
       }
   }

   public static void insertStuff()
   {
       for(int i = 0; i < boat.length; i++)
           for(int k = 0; k < boat[0].length; k++)
           {
               if(3+k+minutes > 62)
                   frame[15 + i - hours][3 + k + minutes-60] = boat[i][k];
               else
                   frame[15 + i - hours][3 + k + minutes] = boat[i][k];
           }

       boolean beganDayCount = false;
       for(int i = 0; i <= 22; i++)
           for(int k = 0; k <=65; k++)
               if(i == (20 - hours) && (k > 2 && k < 63) && frame[i][k] == ' ')
               {
                   if(!beganDayCount)
                   {
                       frame[i][k] = '-';
                       beganDayCount = true;
                   }
                   else 
                   {
                       if(day > 0)
                           frame[i][k] = '~';
                       if(day == 0)
                           frame[i][k] = '-';
                       else
                           frame[i][k] = '~';
                       day--;
                   }
               }
       putInBirdsOrStars();
       putInClouds();
       if(hours == 9)
           putInKraken();
   }

   public static void putInKraken()
   {
       for(int i = 0; i < kraken.length; i++)
           for(int k = 0; k < kraken[0].length; k++)
               frame[i + 12][k + 20] = kraken[i][k];
   }

   public static void putInClouds()
   {
       int x = (int)(Math.random() * 7) + (14-hours);
       int y = (int)(Math.random() * 54) + 2;
       boolean noFreeSpace = true;

       for(int i = 0; i < cloud.length; i++)
       {
           for(int k = 0; k < cloud[0].length; k++)
           {
               if(frame[x + i][y + k] == ' ' )
                   noFreeSpace = false;
               else
               {
                   noFreeSpace = true;
                   break;
               }
           }
           if(noFreeSpace)
               break;
       }

       if(x + 2 > 20 - hours)
           noFreeSpace = true;

       if(!noFreeSpace)
       {
           for(int i = 0; i < cloud.length; i++)
               for(int k = 0; k < cloud[0].length; k++)
                   frame[x + i][y + k] = cloud[i][k];
           weekday--;
       }

       attempts++;
       if(attempts > 200)
       {
           attempts = 0;
           retry();
       }
       if(weekday > 0)
           putInClouds();
   }

   public static void putInBirdsOrStars()
   {
       int x = (int)(Math.random() * 5) + (12 - hours);
       int y = (int)(Math.random() * 60) + 2;
       boolean freeSpace = false;

       for(int i = 0; i < bird.length; i++)
           if(frame[x][y] == ' ' && frame[x][y + 1] == ' ' && frame[x][y + 2] == ' ')
               freeSpace = true;

       if(x > 20- hours)
           freeSpace = false;
       if(birds && freeSpace)
       {
           for(int i = 0; i < bird.length; i++)
               frame[x][y++] = bird[i];
           month--;
       }
       else if(freeSpace)
       {
          frame[x][y] = '*';
          month--;
       }
       if(month > 0)
           putInBirdsOrStars();
   }

   public static void initiateFrame()
   {
       for(int i = 0; i <= 22; i++)
           for(int k = 0; k <=65; k++)
           {
               if(((k == 0 || k == 65) && (i > 0)) || ((k == 2 || k == 63) && (i > 1 && i < 22)))
                   frame[i][k] = '|';
               else if((i == 0 && (k > 0 && k < 65)) || ((i == 1 || i == 21) && (k > 2 && k < 63)) || (i == 22 && (k > 1 && k < 64)))
                   frame[i][k] = '_';
               else
                   frame[i][k] = ' ';
           }

       frame[1][1] = '\\'; frame[1][64] = '/'; frame[22][1] = '/';frame[22][64] = '\\';
       insertStuff();
   }        


   public static void printFrame()
   {
       for(int i = 0; i <= 22; i++)
       {
           for(int k = 0; k <=65; k++)
               System.out.print(frame[i][k]);
           System.out.println();
       }
   }
}

เอาท์พุทแบบสบาย ๆ

 ________________________________________________________________  
|\ ____________________________________________________________ /| 
| |                                                      -.-   | | 
| |                                   -.-                      | | 
| |                                                            | | 
| |      -.-                                                   | | 
| |                                                            | | 
| |               -.-                                          | | 
| |                                                            | | 
| |                     -.-                           -.-      | | 
| |    -.-                                  ___                | | 
| |            -.-                        _(   )      ___      | | 
| |             ___                      (___)__)   _(   )     | | 
| |           _(   )        ___               _    (___)__)    | | 
| |          (___)__)     _(   )             /|\               | | 
| |     ___              (___)__)   ___     / | \              | | 
| |   _(   )                      _(   )   /__|__\             | | 
| |  (___)__)                    (___)__) ____|____            | | 
| |-~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~\_______/~~~~~~~~~~~~| | 
| |                                                            | | 
| |                                                            | | 
| |____________________________________________________________| | 
|/______________________________________________________________\| 

เอาต์พุตไม่ว่างสุด

 ________________________________________________________________ 
|\ ____________________________________________________________ /|
| |  *  * **    * *        *  *    **       * *   *    * *  *  | |
| |*  _   *  *       **  *        *         *   *  *      *    | |
| |  /|\*    ___  *  **  *     *        *      ___  *     *    | |
| | / | \  _(   )    ___      ___       ___  _(   )    ___     | |
| |/__|__\(___)__) _(   )   _(   )    _(   )(___)__) _(   )    | |
| |___|____       (___)__) (___)__)  (___)__)       (___)__)  _| |
| |_______/-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~\| |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |____________________________________________________________| |
|/______________________________________________________________\|

หากเราจะแนะนำ kraken ของเราโดยการเข้ารหัสค่าบางอย่างเราจะได้รับ ...

 ________________________________________________________________ 
|\ ____________________________________________________________ /|
| |                                                            | |
| |*           *  *     *                                   *  | |
| |  *       *                                    *   *   *    | |
| |*          ___      *  *                   *    *           | |
| |         _(   )  _         ___      *   *                   | |
| |     *  (___)__)/|\*     _(   )  *   *    *   ___   *   *   | |
| |   ___         / | \    (___)__)   ___      _(   )    ___   | |
| | _(   )       /__|__\            _(   )    (___)__) _(   )  | |
| |(___)__)     ____|____          (___)__)           (___)__) | |
| |-~~~~~~~~~~~~\_______/~~~-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| |
| |                    ________                                | |
| |                   /  _   _ \                               | |
| |                  |  |_| |_| |                              | |
| |                   \___\ /__/                               | |
| |                    /| | | |\                               | |
| |                 __/ | | | | \__                            | |
| |                   _/  | |  \_                              | |
| |                      /   \                                 | |
| |                                                            | |
| |____________________________________________________________| |
|/______________________________________________________________\|

5
รัก Kraken ที่เหมือน Squidward)
Somnium

11

Python3 - Pirates และแมงกะพรุน: 1580 1472 ไบต์

ทุกวันพุธเวลาเที่ยงคืนเรือโจรสลัดจะจมเรือของเรา เสียงดังขึ้นทำให้แมงกะพรุนยักษ์ซึ่งสุ่มเดินเตร่เฟรมเป็นเวลาหนึ่งชั่วโมง

from random import*
from datetime import*
l=len;r=range
n=randint
def f(s,p,*a):
 global c,o;j=l(s[0])
 while 1:
  x=n(3,63-j);y=n(3,p);g=y+l(s);h=x+j
  if not(o[y][x]or o[g][h]or o[g][x]or o[y][h]):break
 if l(a)!= 0:x,y=a
 for w in r(l(s)):
  for m in r(j):c[y+w][x+m]=s[w][m];o[y+w][x+m]=1
E=datetime.now();D=(E.weekday()+1)%7
h=E.hour;M=E.month
t=6<h<18;N=(3*M,M)[t]
H=9if h==0 else 21-h%12
s=min(H-1,12)
o=[[0]*66 for i in r(23)]
c=[['']*66 for i in r(23)]
c[0]=[' ']+['_']*64+[' ']
c[1]=['|','\\']+['_']*62+['/','|']
for i in r(2,21):c[i]=['|',' ','|']+[' ']*60+['|',' ','|'] 
c[21]=['|',' ','|']+['_']*60+['|',' ','|']
c[22]=['|','/']+['_']*62+['\\','|']
for i in r(3,63):c[H][i]='~'
Z=(D!=3or h!=0)
B=(['    _~_      ','  __)__)__   ','  )_))_))_)  ','.--:--:--:-=/',' \\_o__o__o_/ '],['    _    ','   /|\\   ','  / | \  ',' /__|__\\ ','____|____','\\_______/'])[Z]
j=l(B[0]);y=H-l(B)+1;x=E.minute 
while 1:
 b=n(3,63)
 if b<x or b>(x+j):break
z=E.day+1;d=b+z
if b<x<d:d+=j
if d>63:d=b-z
if d<x<b:d-=j
c[H][b]=c[H][d]='-'
for w in r(l(B)):
 for m in r(j):
  g=x+m;k=y+w
  if g>59:c[k][g-57]=B[w][m];o[k][g-57]=1
  else:c[k][g+3]=B[w][m];o[k][g+3]=1
f((["  ,'',  ",".°____°."," :::::: ",",';:::'."," ,';:'. "],[''])[Z],s,n(3,50),n(10,13))
f((['  o  ° o °','°________°','/___°____\\'],[''])[Z],s,15,18)
for i in r(D):f(['   ___  ','  (   ) ','(___)__)'],s-3)
for i in r(N):f(('*',['-.-'])[t],s)
for w in r(23):
 for m in r(66):print(c[w][m],end='')
 print('')

ตัวอย่างในวันอังคารที่ 19 สิงหาคมเวลา 23:27 น

ป้อนคำอธิบายรูปภาพที่นี่

ในวันพุธรอบเที่ยงคืน:

ป้อนคำอธิบายรูปภาพที่นี่


6

คอบร้า - 994

ไม่มี Bouys: 994

class P
    def main
        r,d=Random(),DateTime.now
        h,y,t,a=(d.hour+23)%24+1,d.day,d.month,d.dayOfWeek to int
        u,i,q=18-(h-1)%12,List<of String>[](20),1-(h+7)%24//13
        for p in 20
            i[p],s=['| |\n'],'__'
            for x in 60,i[p],s=[if(p-u,'[' _'[p//19]]','~')]+i[p],s+'_'
        for g in 6,for c in 9,i[u-g][(d.minute+c)%60]='[r'\_______/____|____ /__|__\   /#|#\     /|\       _    '[g*9+c]]'
        while x,if'~'==i[u][p-=p-r.next(60-y)]==i[u][p+y+1],i[u][p],i[u][p+y+1],x='-','-',0
        while g+c
            o,c,g=i,a,t+t*q*2
            for z in 99,if if(c,o[y-=y-r.next(u-2)][x-=x-r.next(52):x+8]+o[y+1][x:x+8]+o[y+2][x:x+8],o[y-=y-r.next(u)][x-=x-r.next(60-3+3*q):x+4-3*q]).join('').trim==''and g,for m in 3-(p-=p-if(c,0,1))*2,for n in 8-p*5,o[y+m][x+n-p*n*q],c,g=if(c,'['   ___   _(###) (___)__)'[m*8+n]]',['['-.-'[n]]','*'][q]),c-(m+n)//9,g-p*n//2
        print' _[s]_ \n|\\[s]/|'
        for l in o,for k in['| |']+l
            Console.foregroundColor=if(k<>'~'or h+a>1,7,9)to ConsoleColor
            Console.write(if(k=='#',' ',k))
        print'|/[s]\\|'

ด้วย Bouys: 1084

class P
    def main
        r,d=Random(),DateTime.now
        h,y,t,a=(d.hour+23)%24+1,d.day,d.month,d.dayOfWeek to int
        u,i,q=18-(h-1)%12,List<of String>[](20),1-(h+7)%24//13
        for p in 20
            i[p],s=['| |\n'],'__'
            for x in 60,i[p],s=[if(p-u,'[' _'[p//19]]','~')]+i[p],s+'_'
        for g in 6,for c in 9,i[u-g][(d.minute+c)%60]='[r'\_______/____|____ /__|__\   /#|#\     /|\       _    '[g*9+c]]'
        while x<>3,if''==(i[u][p-=p-r.next(58-y):p+3]+i[u][p+y+3:p+y+7]).join('').trim(c'~')
            i[u-1][p+1]=i[u-1][p+y+4]='|'
            for x in 3,i[u][p+x]=i[u][p+y+3+x]='['(_)'[x]]'
        while g+c
            o,c,g=i,a,t+t*q*2
            for z in 99,if if(c,o[y-=y-r.next(u-2)][x-=x-r.next(52):x+8]+o[y+1][x:x+8]+o[y+2][x:x+8],o[y-=y-r.next(u)][x-=x-r.next(60-3+3*q):x+4-3*q]).join('').trim==''and g,for m in 3-(p-=p-if(c,0,1))*2,for n in 8-p*5,o[y+m][x+n-p*n*q],c,g=if(c,'['   ___   _(###) (___)__)'[m*8+n]]',['['-.-'[n]]','*'][q]),c-(m+n)//9,g-p*n//2
        print' _[s]_ \n|\\[s]/|'
        for l in o,for k in['| |']+l
            Console.foregroundColor=if(k<>'~'or h+a>1,7,9)to ConsoleColor
            Console.write(if(k=='#',' ',k))
        print'|/[s]\\|'

ทุก ๆ วันอาทิตย์เวลา 1:00 น. ความกว้างใหญ่ไพศาลของทะเลตัวหนอนจะมีชีวิตชีวาด้วยแสงสีฟ้าระยิบระยับ ความหวังกลับคืนสู่ผู้คนในโลกแห่งเปลือกอันเปลี่ยว

ป้อนคำอธิบายรูปภาพที่นี่


5

C # 1124 1128bytes

สัปดาห์ละครั้ง, เรือดำน้ำ ASCII กระจอกควรจะปรากฏขึ้นเป็นเวลาหนึ่งชั่วโมงด้านล่างตลิ่งและเพิ่มไบต์ของฉันนับอย่างเห็นได้ชัดหวังว่ารหัสนี้จริงจะทำงานในขณะนี้ ฉันกลัวที่จะคิดว่าจะเกิดอะไรขึ้นในวันเสาร์เวลา 11:00 น. ในเดือนธันวาคม ...

using System;class P{static string G(DateTime t){Func<int,int>K=new Random().Next;int i,j,D=t.Day,H=t.Hour,W=19-H%12,E=(int)t.DayOfWeek;var M=new char[60,19];Func<int,int,int,string,bool>T=(x,y,w,s)=>{for(i=0;i<s.Length;)if(M[(x+i%w)%60,y+i++/w]>0)return 0>1;for(;i-->0;)M[(x+i%w)%60,y+i/w]=s[i];return 1>0;};T(t.Minute,W-5,9,@"    _       /|\     / | \   /__|__\ ____|____\_______/");while(M[j=K(59-D),W]+M[j+D+1,W]>0){}M[j+D+1,W]=M[j,W]='-';for(j=60;j-->0;)T(j,W,1,"~");for(;++j<E;)while(!T(K(53),K(W-3),8,"   ___   _(   ) (___)__)")){}var N=H<6|H>=18;for(j=0;j++<t.Month*(N?3:1);)while(!T(K(60-(N?1:3)),K(W-1),3,N?"*":"-.-")){}if(H==18&E==4)T(K(59),W+2,17,@"    __            __/  \_________ (_______________)");var res=" ________________________________________________________________\n|\\ ____________________________________________________________ /|\n| |";for(j=0;j<19;j++){for(i=0;i<60;i++)res+=M[i,j];res+="| |\n| |";}return res+"____________________________________________________________| |\n|/______________________________________________________________\\|";}static void Main(){Console.Write(G(DateTime.Now));}}

โค้ดที่จัดรูปแบบค่อนข้างน้อยซึ่งจะวาดใหม่ทุกๆ 15 วินาทีเพราะฉันอ่านสเป็คไม่ถูกต้อง:

using System;

class P
{
    static string G(DateTime t)
    {
        Func<int,int>K=new Random().Next;
        int i,j,D=t.Day,H=t.Hour,W=19-H%12,E=(int)t.DayOfWeek;
        var M=new char[60,19];

        Func<int,int,int,string,bool>T=(x,y,w,s)=>
        {
            for(i=0;i<s.Length;)
                if(M[(x+i%w)%60,y+i++/w]>0)
                    return 0>1;
            for(;i-->0;)
                M[(x+i%w)%60,y+i/w]=s[i];
            return 1>0;
        };

        T(t.Minute,W-5,9,@"    _       /|\     / | \   /__|__\ ____|____\_______/");

        while(M[j=K(59-D),W]+M[j+D+1,W]>0){}
        M[j+D+1,W]=M[j,W]='-';

        for(j=60;j-->0;)
            T(j,W,1,"~");

        for(;++j<E;)
            while(!T(K(53),K(W-3),8,"   ___   _(   ) (___)__)")){}

        var N=H<6|H>=18;
        for(j=0;j++<t.Month*(N?3:1);)
            while(!T(K(60-(N?1:3)),K(W-1),3,N?"*":"-.-")){}

        if(H==18&E==4)
            T(K(59),W+2,17,@"    __            __/  \_________ (_______________)");

        var res=@" ________________________________________________________________
|\ ____________________________________________________________ /|
| |";

        for(j=0;j<19;j++)
        {
            for(i=0;i<60;i++)
                res+=M[i,j];
            res+="| |\n| |";
        }

        return res+@"____________________________________________________________| |
|/______________________________________________________________\|";
    }

    static void Main()
    {
        for(;;)
        {
            Console.Clear();
            Console.Write(G(DateTime.Now));
            System.Threading.Thread.Sleep(15000);
        }
    }
}

ตัวอย่างผลลัพธ์ (ควรอ่าน 3:31, พุธ, 13 สิงหาคม):

 ________________________________________________________________
|\ ____________________________________________________________ /|
| |                                                            | |
| |         *  *                                               | |
| |                         *                                  | |
| |      *                 *                                   | |
| |                     *                                      | |
| |            ___                        * *                  | |
| |          _(   )                                            | |
| |        *(___)__)      *                   *                | |
| |                                  *                         | |
| |           ___    *                                      *  | |
| |     *   _(   )  *                             ___    *     | |
| |      * (___)__)                   _         _(   )         | |
| |        *             *           /|\       (___)__)  *  *  | |
| |                                 / | \     *           *    | |
| |                                /__|__\                     | |
| |                               ____|____                    | |
| |~~-~~~~~~~~~~~~~-~~~~~~~~~~~~~~\_______/~~~~~~~~~~~~~~~~~~~~| |
| |                                                            | |
| |                                                            | |
| |____________________________________________________________| |
|/______________________________________________________________\|

3

Lua - มากกว่าดวงดาว

ฉันเสร็จแล้ว!

ไม่เสร็จแล้ว ฉันทำด้วยรหัสและความท้าทายนี้แล้ว มันไม่ได้เล่นกอล์ฟ แต่ไม่มีตัวบ่งชี้เดือน ไม่มีการหลีกเลี่ยง ... ฉันโพสต์เพียงเพื่อว่าในกรณีที่ไม่มีใครทำ chalange นี้ให้เสร็จสมบูรณ์อย่างน้อยที่สุดคุณก็เห็นบางอย่างมีความคิด

--Halfed Assed Calender
math.randomseed(os.time())
math.randomseed(os.time())
math.randomseed(os.time())
local bh=os.date("%I")
local bm=os.date("%m")
local wdm=os.date("%d")
local cdw=os.date("%w")
local bsm=os.date("%M")
local hh=tonumber(os.date("%H"))
local function tp(t)
    for i=1,#t do
        for k= 1, #t[i] do
            io.write(t[i][k])
        end
        print()
    end
end

local function s2a(s)
    local ns = {}
    for i=1, table.getn(s) do
        local nns={}
        for k = 1, string.len(s[i]) do
            table.insert(nns, string.sub(s[i],k,k))
        end
        table.insert(ns,nns)
    end
    return ns
end



function ca(bg, a, x,y)
    ntb={} lbg=#bg la=#a lax=#a[1] lbgx=#bg[1]
    if lbgx-((lax+y)-1)<0 then
    elseif lbg-((la+x)-1)<0 then
    else
        for i=1,la do
            for j = 1, lax do
                if " "==a[i][j] then
                else
                    table.remove(bg[x+(i-1)],y+(j-1))
                    table.insert(bg[x+(i-1)],y+(j-1), a[i][j])
                end
            end
        end
    end
    return bg
end
f=s2a({" ________________________________________________________________ ","|\\ ____________________________________________________________ /|","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |                                                            | |","| |____________________________________________________________| |","|/______________________________________________________________\\|"})
boat=s2a({"    _    ","   /|\\     ","  / | \\   "," /__|__\\  ","____|____ ","\\_______/  "})
ccc=s2a({"   ___  "," _(   ) ","(___)__)"})
water=s2a({"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"})
tblock=s2a({"xxx","xxx","xxx"})
temp=ca(f,water,19-bh,4)
if hh<18 and hh>= 6 then
    n=bm sb = {{"-",".","-"}}
else
    n=3*bm sb={{"*"}}
end

for i = 1,n do
    r1=math.random(14 -bh)
    r2=math.random(59)
    temp=ca(temp,sb,r1+3,r2+3)
end
if cdw==0 then
else
    for i=1,cdw do
        r1=math.random(11-bh)
        r2=math.random(52)
        temp=ca(temp,ccc,r1+3,r2+3)
    end
end
temp=ca(temp,boat,14-bh, bsm)
tp(temp)

คุณสามารถดูได้ที่นี่


|\ ____________________________________________________________ /|
| |                                                            | |
| |       -.-                                                  | |
| |                                                            | |
| |                                        ___                 | |
| |                                      _(   )                | |
| |                  -.-   -.-          (___)__)               | |
| |                                                            | |
| |                            -.-             _        ___    | |
| |          -.-                              /|\     _(   )   | |
| |              -.-                         / | \   (___)__)  | |
| |                                         /__|__\ -.-.-      | |
| |                                        ____|____           | |
| |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\_______/~~~~~~~~~~~| |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |                                                            | |
| |____________________________________________________________| |
|/______________________________________________________________\|

5
การเพิ่มเอาต์พุตตัวอย่างที่นี่ก็ดีเช่นกัน (โดยเฉพาะอย่างยิ่งสำหรับบิตสัปดาห์ละครั้ง)
trichoplax
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.