শুভ জন্মদিন, রাফায়েল সেকো!


33

রাফেল Cecco প্রোগ্রামার যারা উত্পাদিত কিছু এর সেরা জন্য ভিডিও গেম ZX স্পেকট্রাম দেরী আটের দশকের মধ্যে কম্পিউটার। অন্যদের মধ্যে তিনি অত্যন্ত প্রশংসিত সাইবারনয়েড এবং এক্সলোন বিকাশ করেছিলেন ।

রাফেল 10 মে, 2017 এ 50 বছর বয়সী । এই চ্যালেঞ্জটি তাঁর কাছে একটি ছোট শ্রদ্ধা, আমাদের মধ্যে অনেক লোক সেই দুর্দান্ত খেলাগুলি খেলতে এবং তারা যে অনুপ্রেরণা নিয়ে এসেছিল, তার জন্য ব্যয় করে।

চ্যালেঞ্জ

সায়বারনয়েডের মূল মেনু স্ক্রিনে দেখা গেলেও ASCII শিল্পে অনুপ্রাণিত হয়ে একটি আয়তক্ষেত্রাকার মার্কি তৈরি করা উদ্দেশ্য The

বিশেষত, স্ট্রিংটি "Happy birthday Raffaele Cecco "(চূড়ান্ত স্থানটি নোট করুন) একটি 12 × 5 আয়তক্ষেত্রের প্রান্তে ঘুরতে দেখানো হবে, স্ন্যাপশটের মাঝে অবিরাম বিরতির সময় সহ।

উদাহরণস্বরূপ, ধরে নিচ্ছি যে পাঠ্যটি ঘড়ির কাঁটার বিপরীতে প্রদর্শিত হবে এবং ঘড়ির কাঁটার বিপরীতে ঘোরানো হয়েছে (নীচের বিকল্পগুলি দেখুন), এখানে আয়তক্ষেত্রাকার মার্কির টানা তিনটি স্ন্যাপশট রয়েছে:

Happy birthd
           a
o          y
c           
ceC eleaffaR

তারপর

appy birthda
H          y

o          R
cceC eleaffa

তারপর

ppy birthday
a           
H          R
           a
occeC eleaff

ইত্যাদি।

বিধি

কোনও ইনপুট নেওয়া হবে না। আউটপুট STDOUT বা সমতুল্য বা কোনও গ্রাফিকাল উইন্ডোতে হবে।

আউটপুট আসলে টেক্সট ঘোরানো চিত্রিত করা উচিত; এটি হল, প্রতিটি নতুন স্ন্যাপশটটি চলাচলের ছাপ দেওয়ার জন্য পূর্ববর্তীটি ওভাররাইট করে। এটি যে কোনও উপায়ে করা যেতে পারে, উদাহরণস্বরূপ, কার্যকরভাবে স্ক্রিনটি সাফ করার জন্য যথাযথ সংখ্যক নিউলাইনগুলি লিখে। এটি যদি কোনও প্রদত্ত স্ক্রিন আকারের জন্য বৈধ হয় তবে তা গ্রহণযোগ্য; উত্তরে এটি নির্দিষ্ট করুন।

নিম্নলিখিত বিকল্পগুলি গ্রহণ করা হয়:

  • পাঠ্যটি ঘড়ির কাঁটা বা ঘড়ির কাঁটার বিপরীতে প্রদর্শিত হতে পারে এবং এটি ঘড়ির কাঁটা বা ঘড়ির কাঁটার বিপরীতে ঘোরানো যেতে পারে (উদাহরণস্বরূপ উপরের স্ন্যাপশটগুলি ঘড়ির কাঁটার দিক থেকে প্রদর্শিত এবং ঘড়ির কাঁটার বিপরীতে ঘোরানো ধরে নেওয়া যায়)।
  • আবর্তনটি চক্রাকারে একটি অসীম লুপে চলতে হবে (প্রোগ্রামটি বন্ধ না হওয়া পর্যন্ত) এবং যে কোনও পর্যায়ে শুরু হতে পারে।
  • স্ন্যাপশটের মাঝে বিরতির সময়টি প্রায় ধ্রুব হওয়া উচিত তবে 0.1 এবং 1 এসের মধ্যে অবাধে চয়ন করা যায়। প্রথম স্ন্যাপশট প্রদর্শিত হওয়ার আগে একটি প্রাথমিক বিরতি গ্রহণযোগ্য।
  • চিঠিগুলি বড় হাতের অক্ষর, লোয়ার-কেস বা মিশ্র কেস হতে পারে (উপরের উদাহরণ হিসাবে)।
  • শীর্ষস্থানীয় বা পিছনে ফাঁকা স্থান অনুমোদিত।

কোনও প্রোগ্রামিং ভাষায় প্রোগ্রাম বা ফাংশন অনুমোদিত । স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

যদি সম্ভব হয় তবে আউটপুট দেখাচ্ছে এমন একটি জিআইএফ ফাইল বা প্রোগ্রামটি পরীক্ষা করার জন্য একটি লিঙ্ক সরবরাহ করুন।

বাইটস মধ্যে সংক্ষিপ্ত কোড।


4
ওভাররাইট করা অসম্ভব হলে কী হবে? আমরা কি 99 টি লাল বেলুন ইর ... নিউলাইন ব্যবহার করতে পারি?
টাইটাস

@ টিটাস কেবল যদি এটি কার্যকরভাবে স্ক্রিনটি সাফ করে এবং চলমান পাঠ্যের ছাপ দেয় (জিআইএফ দয়া করে!)
লুইস মেন্ডো

"এটি কোনও উপায়ে করা যায়, উদাহরণস্বরূপ, স্ক্রিনটি কার্যকরভাবে সাফ করার জন্য উপযুক্ত সংখ্যক নিউলাইনগুলি লিখে" " - এটি কনসোল আকারের উপর নির্ভর করে না? যদি এটি (পরবর্তী আয়তক্ষেত্র সহ) এর অর্থ হয় যে পরবর্তী পুনরাবৃত্তিটি পূর্ববর্তীটি (আমার ছোট কনসোলে) প্রতিস্থাপন করে তবে কী কোনও একটি নিউলাইন মুদ্রণযোগ্য ?
জোনাথন অ্যালান

1
@ জোনাথন ওকে, প্রভাবটি দেখতে কেবল এই কনসোলটি দিয়ে একটি জিআইএফ সরবরাহ করুন
লুইস মেন্ডো

উত্তর:


8

জেলি , 74  65 বাইট

“ÆÇÐÑ÷øœ‘Ṭœṗ⁸ṙ©-¤4421œ?U0¦;"⁷,⁶ẋ⁵¤¤ṁ9¤ȮœS.®ß
“9ɲcḟ#%⁴1t(ŀȷUCOw⁾»Ç

উইন্ডোজ সংস্করণটি 6 লাইনের উচ্চ সিপি -65001 কনসোলে চলছে।
পুনরাবৃত্তির মধ্যে অর্ধেক সেকেন্ড (প্লাস মূল্যায়ন) বিরতি রয়েছে:

আউটপুট gif

কিভাবে?

“9ɲcḟ#%⁴1t(ŀȷUCOw⁾»Ç - Main link: no arguments
“9ɲcḟ#%⁴1t(ŀȷUCOw⁾»  - compression of [d( Happy)+d( birthday)+d( Raff)+s(aele)+d( Ce)+d(cc)+s(o)] - d=dictionaryLookup, s=stringEncode.
                     -              = " Happy birthday Raffaele Cecco"
                   Ç - call last link (1) as a monad

“ÆÇÐÑ÷øœ‘Ṭœṗ⁸ṙ©-¤4421œ?U0¦;"⁷,⁶ẋ⁵¤¤ṁ9¤ȮœS.®ß - Link 1, rotate, print, recurse: string s
                ¤                            - nilad followed by link(s) as a nilad:
            ⁸                                -   link's left argument (initially s)
               -                             -   literal -1
             ṙ                               -   rotate left -1 (e.g. "blah" -> "hbla")
              ©                              -   copy to register and yield
“ÆÇÐÑ÷øœ‘                                    - literal: [13,14,15,16,28,29,30]
         Ṭ                                   - untruth: [0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1]
          œṗ                                 - partition right at truthy indexes of left
                                             -   chops up the rotated string into 8
                                             -   e.g. [" Happy birth",'d','a','y'," Raffaele Ce",'c','c','o'])
             4421œ?                          - get the 4421st permutation of those items
                                             -   e.g. [" Happy birth",'o','d','c','a','c','y'," Raffaele Ce"]
                         ¦                   - apply to indexes:
                        0                    -   0 (right most)
                       U                     -   upend  (e.g. " Raffaele Ce" -> "eC eleaffaR ")
                                     ¤       - nilad followed by link(s) as a nilad:
                                  ¤          -   nilad followed by link(s) as a nilad:
                                 ¤           -     nilad followed by link(s) as a nilad:
                              ⁶              -       literal space
                                ⁵            -       literal 10
                               ẋ             -       repeat: "          "
                            ⁷                -     literal new line
                             ,               -     pair: ['\n',"          "]
                                     9       -   literal 9
                                    ṁ        -   mould like: ['\n',"          ",'\n',"          ",'\n',"          ",'\n',"          ",'\n']
                           "                 - zip with:
                          ;                  -   concatenation
                                             -     e.g. [" Happy birth\n","o          ","d\n","c          ","a\n","c          ","y\n","eC eleaffaR           ","\n"])
                                      Ȯ      - print and yield
                                         .   - literal 0.5
                                       œS    - after sleeping right seconds yield left
                                          ®  - recall value from register (s rotated by 1)
                                           ß - call this link (1) with the same arity (as a monad)

16

এইচটিএমএল + ইএস 6, 200 বাইট

<pre id=o><script>setInterval(_=>o.innerHTML=(f=k=>k--?f(k)+(k<11?s[k]:k>47?s[74-k]:k%12?++k%12?' ':s[10+k/12]+`
`:s[30-k/12]):'')(60,s=s.slice(1)+s[0]),99,s="Happy birthday Raffaele Cecco ")</script>


এটা দেখতে অসাধারণ!
লুইস মেন্ডো

@ লুইসমেন্দো এটি স্মৃতি ফিরিয়ে এনেছে, যদিও আমি সাইবারনয়েড দ্বিতীয়টিকে প্রথমটির চেয়ে ভাল মনে করি। আমি নিশ্চিত যে আমি বেশ কয়েকটা ক্র্যাকট্রোসেও এই প্রভাবটি দেখেছি। ;-)
আর্নল্ড

হ্যাঁ, আমি দ্বিতীয়টিকেও পছন্দ করেছি :-)
লুইস মেন্ডো

11

জেডএক্স স্পেকট্রাম বেসিক, 187 বাইট

বিরক্ত হয়ে গেলেন যে ফিলিপ আমাকে কয়েক মিনিট ধরে এতে মারধর করেছেন :-) নম্বরগুলি অপ্রিন্টযোগ্য\{15} নিয়ন্ত্রণ কোড - আপনি যদি টিঙ্কার করতে চান তবে Zmakebas সহ সংকলন করুন । মনে রাখবেন যে পুরো আয়তক্ষেত্রটি তাত্ক্ষণিকভাবে মুদ্রিত হয় না, তবে এটি প্রথম কয়েকটি ফ্রেমের পরে পড়ে যায়।

1 let a$=" Happy birthday Raffaele Cecco":dim b$(code"\{15}"):dim c$(pi*pi)
3 let b$=a$(sgn pi)+b$:let a$=a$(val"2" to)+a$(sgn pi):print "\{0x16}\{0}\{0}";a$(to code"\{12}")'b$(sgn pi);c$;a$(val"13")'b$(val"2");c$;a$(code"\{14}")'b$(pi);c$;a$(len b$)'b$(val"4" to):go to pi

এটি এখানে চেষ্টা করুন (অনলাইন জেএস-অনুকরণীয় সংস্করণ, শুরু করতে এন্টার টিপুন) ... http://jsspeccy.zxdemo.org/cecco/

আপনি একটি PRINT এ টি না করে ফ্রেমের মধ্যে স্ক্রিন সাফ করে চারটি বাইট সংরক্ষণ করতে পারেন, তবে এটির জন্য এটি খুব ঝলকানি ...

1 let a$=" Happy birthday Raffaele Cecco":dim b$(code"\{15}"):dim c$(pi*pi)
3 let b$=a$(sgn pi)+b$:let a$=a$(val"2" to)+a$(sgn pi):cls:print a$(to code"\{12}")'b$(sgn pi);c$;a$(val"13")'b$(val"2");c$;a$(code"\{14}")'b$(pi);c$;a$(len b$)'b$(val"4" to):go to pi

1
আহ, তবে আপনি প্রচুর বাইট দ্বারা
ফিলিপ কেন্ডাল

2
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন ইন্ডার

1
গেমটি স্বাগতম। জেডএক্স সর্বদা দেখতে ভাল। চমৎকার উত্তর. +1 টি।
এলপেড্রো

10

ভি, 75 71 70 বাইট

4 ডি বাইট সংরক্ষিত হয়েছে @ ডিজেএমসিমেহেমে ধন্যবাদ

iHappy birthd
±± a
o±° y
c±± 
ceC eleaffaR6ògÓÉ {dêjP2Ljjx1Lp5LxkpGd

এখানে একটি টিআইও লিঙ্ক রয়েছে তবে নোট করুন যে এটি টিআইওতে কাজ করবে না কারণ প্রোগ্রাম অসীমভাবে লুপ করে। এটি অনলাইন চেষ্টা করুন!

যেহেতু এই কোডটিতে অপ্রিন্টেবল রয়েছে, তাই এখানে একটি হ্যাক্সডাম্প রয়েছে।

00000000: 6948 6170 7079 2062 6972 7468 640a b1b1  iHappy birthd...
00000010: 2061 0a6f b1b0 2079 0a63 b1b1 200a 6365   a.o.. y.c.. .ce
00000020: 4320 656c 6561 6666 6152 1b36 f267 d3c9  C eleaffaR.6.g..
00000030: 207b 64ea 6a50 324c 166a 6a78 314c 7035   {d.jP2L.jjx1Lp5
00000040: 4c78 6b70 4764                           LxkpGd

ঘুমের সময় 500 মিলিসেকেন্ড।

giffy


আপনি একটি টিআইও লিঙ্ক দিতে পারেন?
আর

কিছু টিপস (সমস্ত পরীক্ষিত নয়): H|-> {<C-v>êx-> এবং 5L->}
DJMcMayhem

মাঝের তিন লাইন পরিবর্তন করুন: এছাড়াও, আপনার repchar কমান্ড সব 9 যখন আপনি 10 বা 11 উদাহরণস্বরূপ ব্যবহার করতে পারে ব্যবহার করছেন ±± a, o° yএবংc±±<space>
DJMcMayhem

@ ডিজেএমসিএমহেম সবকিছু পরিচালনা করে তবে 5L=> }
কৃতিমিক লিথোস

@ রিকার হয়ে গেছে, তবে লক্ষ করুন যে টিআইও লিঙ্কটি অ্যানিমেশনটি প্রদর্শন করতে পারে না
ক্রিটিক্সী লিথোস

9

জেডএক্স স্পেকট্রাম বেসিক, 274 বাইট

ভাল, কেউ এটা করতে হয়েছিল। অল্প অল্প অল্প হওয়া এবং অ্যানিমেশনগুলির মধ্যে বিরতি না থাকায় শিশুরা এটিকে অযোগ্য ঘোষণা করতে পারে তবে আমি এখানে একটি বিশেষ কেস দাবি করছি :-)

10 LET m$=" Happy birthday Raffaele Cecco": LET o=0: LET l=LEN m$: LET f=4: LET t=12: LET a=t+f: LET b=27
20 FOR j=SGN PI TO l: LET i=j+o: IF i>l THEN LET i=i-l
40 LET x=(i-SGN PI AND i<=t)+(11 AND i>t AND i<=a)+(b-i AND i>a AND i<=b)
50 LET y=(i-t AND i>t AND i<=a)+(f AND i>a AND i<=b)+(b+f-i AND i>b): PRINT AT y,x;m$(j): NEXT j
80 LET o=o+SGN PI: IF o>=l THEN LET o=o-l
90 GO TO t

খুব গল্ফ হয় না। 274 বাইট হ'ল এই প্রোগ্রামটি সংরক্ষণ করার সময় স্পেকট্রাম দ্বারা টেপ করার জন্য সংরক্ষণ করা বাইটের সংখ্যা।


1
ব্যবহার করে আপনি সব কষ্ট গিয়েছিলাম SGN PIজন্য 1(5 বাইট সংরক্ষণ) কিন্তু তুমি ভুলে গেছ NOT PIজন্য 0এবং VALঅন্যান্য ধ্রুবক জন্য ...
নিল

1
NOT PIআমি শুধু মিস করেছি। ইচ্ছাকৃতভাবে VALএটি যেমনটি যথেষ্ট ধীর ছিল তেমনটি করেনি এবং VALমারাত্মকভাবে ধীর হয়ে গেছে।
ফিলিপ কেন্ডল

1
জেডএক্স বেসিক সবসময় আমার কাছ থেকে একটি উত্সাহ পেতে পারে। এখানে কোনও প্যাড্যান্টিজম নেই। আমার মনে আছে পুরনো দিনগুলি ... সুন্দর উত্তর।
এলপেড্রো

8

এসভিজি (এইচটিএমএল 5), 267 বাইট

<svg width=200 height=90><defs><path id=p d=M40,20h120v50h-120v-50h120v50h-120v-50></defs><text font-size="19" font-family="monospace"><textPath xlink:href=#p>Happy birthday Raffaele Cecco<animate attributeName=startOffset from=340 to=0 dur=5s repeatCount=indefinite>

ওয়েল, এটা হয় আয়তক্ষেত্রাকার, এবং এটি হল একটি তাবু, এবং এটি হল হওয়া ASCII টেক্সট ...


1
... এবং এটি স্মুথ চালায় :-)
লুইস মেন্ডো

7

পিএইচপি, 184 বাইট

for($r=" ";++$i;sleep(print chunk_split(str_pad($r,96,"
",0),12)),$r=$k="0")for(;$c="ABCDEFGHIJKWco{zyxwvutsrqpdXL@"[$k];)$r[ord($c)-64]="Happy Birthday Raffaele Cecco "[($i+$k++)%30];

স্ক্রিনটি সাফ করার জন্য 39 টি নতুন লাইন প্রিন্ট করে; দিয়ে চালানো -nr
আসল বিরতি 1 সেকেন্ড; তবে আমি জিআইএফ ছড়িয়ে দিয়েছি

শুভ জন্মদিন

ungolfed

$p = "ABCDEFGHIJKWco{zyxwvutsrqpdXL@";  # (positions for characters)+64 to ASCII
$t = "Happy Birthday Raffaele Cecco ";  # string to rotate
for($r=" ";                     # init result to string
    ++$i;                       # infinite loop
    $r=$k="0")                      # 6. reset $r and $k
{
    for(;$c=$p[$k];)                # 1. loop through positions
        $r[ord($c)-64]=                 # set position in result
        $t[($i+$k++)%30];               # to character in string
    sleep(                          # 5. wait 1 second
        print                       # 4. print
            chunk_split(
            str_pad($r,96,"\n",0)   # 2. pad to 96 chars (prepend 36 newlines)
            ,12)                    # 3. insert newline every 12 characters
        );
}


5

পাইথন 3 , 160 বাইট

import time;s="Happy_birthday_Raffaele_Cecco_"
while[time.sleep(1)]:print(s[:12]+'\n%s%%11s'*3%(*s[:-4:-1],)%(*s[12:15],)+'\n'+s[-4:14:-1]+'\n'*30);s=s[1:]+s[0]

এটি অনলাইন চেষ্টা করুন! (কোনও অ্যানিমেশন নেই)


আমি আপনাকে জানতাম যে আপনি আসবেন এবং পাইথন দিয়ে আমাকে মারবেন। আমি এত ভাল করছিলাম! কমপক্ষে খনিটি "বাগগুলি" ব্যবহার করে যা আপনি পাইথন 3 :-) ব্যবহার করতে পারবেন না। বরাবর মত দুর্দান্ত উত্তর। +1
এলপেড্রো

5

পাইথন 2, 218 200 190 181 176 বাইট

import time;f='Happy birthday Raffaele Cecco '
while[time.sleep(1)]:v=f[::-1];print'\n'*90,f[:12],''.join('\n'+a+' '*10+b for a,b in zip(v[:3],f[12:16])),'\n',v[3:15];f=f[1:]+f[0]

-18 বাইট সরিয়ে strবিন্যাস

-10 বাইটস, @ ইউরাইল এবং @ এলপিড্রো পরামর্শগুলির জন্য ধন্যবাদ

নেগেটিভ ইনডেক্সিং সরিয়ে -9 বাইটস

-5 বিপরীত মজুত করে বাইট fহিসাবে vএবং whileশর্ত

repl.it


1
আপনি মধ্যে হোয়াইটস্পেস কেটে যাবে while 1:এবং printএবং পরবর্তী প্রতিস্থাপন ;একটি (প্রকৃত) রাখুন NEWLINE। এছাড়াও f='H..। এছাড়াও f[:1]actualy হয় f[0]
উরিল

ওপি সূচিত করে যে সময়টি 0.1 এবং 1 সেকেন্ডের মধ্যে যে কোনও কিছু হতে পারে তাই কেন time.sleep(1)এটি 200 এর নিচে নেবেন না ?
এলপেড্রো

3

রুবি + জিএনইউ কোর ইউটিস, 136 বাইট

s='Happy birthday Raffaele Cecco '
loop{puts`clear`+s[0,12],(0..2).map{|i|s[~i]+' '*10+s[12+i]},s[15,12].reverse
s=s[1,29]+s[0];sleep 1}

3

পাইথন 2, 182 179 173 160 বাইট

i="Happy birthday Raffaele Cecco "
while[s for s in i*18**4]:print'\n'*99,'\n'.join([i[:12]]+[i[-z]+' '*10+i[11+z]for z in 1,2,3]+[i[15:-3][::-1]]);i=i[1:]+i[0]

এটি repl.it এ চেষ্টা করুন

টিআইওতে কাজ করে না তাই repl.it ব্যবহার করার জন্য আমার প্রথম প্রচেষ্টা

"সময় নষ্ট" লুপটি 1000000 গণনা ব্যবহার করে সম্পাদনা 0.1 এবং 1 এর মধ্যে ধারাবাহিক বিলম্ব দেয় আমার মেশিন এবং উপর repl.it এবং আমদানি সংরক্ষণtime । আমার ধারণা আপনি যদি এটি 648 এমবি র‌্যাম সহ কোনও 286 কম্পিউটারে চালিত করেন তবে এটি 1 সেকেন্ডেরও বেশি যেতে পারে তবে আমি নিশ্চিত যে এটি ঘটবে না not যদি তা হয় তবে কেবল 1000000 হ্রাস করুন এবং আমাকে কয়েকটা বাইট সংরক্ষণ করুন :-)

সম্পাদনা 2পাইথন 2-এ তালিকার বোঝাপড়াগুলি মনে রাখার জন্যs যাতে আমি এটি পরে ব্যবহার করতে পারি এবং 0 এবং "" ব্যতীত অন্য কোনও কিছু সত্য বলে মনে করতে পারি। বাগ বা বৈশিষ্ট্যগুলি? যত্ন নেই। এটি আমাকে 6 বাইট সংরক্ষণ করেছে :-)

ঘূর্ণনটি উল্টিয়ে এবং জোড়ার অভ্যন্তরের মাঝারি সারিগুলির জন্য তালিকা বোঝার ব্যবহার করে এবং আরও পরিবর্তন 3000000করে 3 টি আরও 13 সম্পাদনা করুন40**4 । শেষের জন্য @ ফেলিক্স ডমবাককে ধন্যবাদ। যদিও আমার তালিকা বোঝার কৌশলটি হারাতে হয়েছিল।


1
আপনি কি বিশাল সংখ্যার জন্য বৈজ্ঞানিক স্বরলিপি বা একটি পাওয়ার এক্সপ্রেশন ব্যবহার করতে পারেন?
ফেলিক্স ডমব্যাক

1
পাওয়ার এক্সপ্রেশন হ্যাঁ, বৈজ্ঞানিক স্বরলিপি নং (কারণ এটি একটি ফ্লোট হয়ে যায়, যা আপনি স্ট্রিং দিয়ে গুণতে পারবেন না)।
L3viathan

3
বাইটের 999999পরিবর্তে বাধ্যবাধকতা 1000000: ভি
মান কালি

ধন্যবাদ @ ভ্যালিউইঙ্ক তবে ফাঁসী তালিকা বোঝার "বাগ" ব্যবহার করে আমাকে আসলে 3000000 এ
পৌঁছাতে হয়েছিল

দুর্ভাগ্যক্রমে না. @ এল 3 ভাইয়াথন ঠিক আছে।
এলপেড্রো

2

জেডএক্স 81 জেড 80 মেশিন কোড, 158 130 বাইট

ঠিক আছে সুতরাং এটি একত্রিত না হওয়া পর্যন্ত এটির প্রচুর বাইট রয়েছে তবে এটি 130 বাইটে নেমে আসে। নিশ্চিত না যে এটি কোনও নিয়ম ভঙ্গ করে? এটি আমার প্রথম পোস্ট এবং কেবল অতিথি হিসাবে।

প্রোগ্রামটি বুদ্ধিমান ফাংশন ব্যবহারের চেয়ে বার্তাটি প্রদর্শনের জন্য 'ব্রুট ফোর্স' ব্যবহার করে কারণ এটি শীর্ষ রেখার জন্য ডান হাতের উল্লম্ব, নীচের লাইন এবং বাম হাতের উলম্বের জন্য পৃথক কোড খণ্ড রয়েছে from অ্যানিমেশনটি বার্তার বিষয়বস্তু ঘোরানো এবং তারপরে এটি কেবলমাত্র একটি স্বল্প বিলম্বের পরে প্রদর্শিত হয় যা 50 এর হারের বাইরে 10 ফ্রেমের জন্য অপেক্ষা করে (ঠিক যেভাবে ইউকে স্পেস জেডডিসের জন্য) এটি ঠিক 0.2 সেকেন্ড হওয়া উচিত।

অ্যানিমেশনটি পাওয়ার জন্য বার্তাটি ঘোরানোর ধারণার জন্য আমাকে কিলমুর্টা ক্রেডিট করতে হবে - এটি 28 বাইট সংরক্ষণ করেছে !!!

main    
  ld hl,happyBirthday           ;load the address of the message
  ld de,(D_FILE)                ;load the base of screen memory
  inc de                        ;increase it by one to bypass the $76
  ld bc,12                  ;ready for 12 loops
  ldir                      ;transfer HL to DE 12 times and increase both accordingly
  ex de,hl                  ;put HL into DE (HL was the message position)
  ld b,4                        ;prepare to loop 4 times
  dec hl                        ;decrease HL (screen location) by 1
rightVertical
  push de                       ;save the character position
  ld de,13                  ;load 13 (for the next line)
  add hl,de                 ;add to HL  
  pop de                        ;get the message position back
  ld a,(de)                 ;load the character into A
  ld (hl),a                 ;save it to HL
  inc de                        ;increase the character position
  djnz rightVertical            ;repeat until B = 0
  dec hl                        ;decrease HL (screen location) by 1 to step back from the $76 char
  ld b,11                       ;prepare for 11 loops
lastLine
  ld a,(de)                 ;load the current character into A
  ld (hl),a                 ;save to the screen
  dec hl                        ;decrease the screen position (as we are going backwards)
  inc de                        ;increase character position
  djnz lastLine             ;repeat until B = 0
  ld b,3                        ;get ready for the left vertical
  inc hl                        ;increase the screen position by 1 as we have gone 1 too far to the left and wrapped to the line above
leftVertical
  push de                       ;save the character position
  ld de,13                  ;load 13 (for the next line)
  sbc hl,de                 ;subtract it to move up a line in memory
  pop de                        ;get the character pos back
  ld a,(de)                 ;load the character
  ld (hl),a                 ;save it to the screen
  inc de                        ;next character
  djnz leftVertical         ;repeat until B = 0 
delayCode
  ld   hl,FRAMES                ;fetch timer                 
  ld   a,(hl)                 ;load into A                        
  sub  10                       ;wait 10 full frames (0.2 of a second)
delayLoop        
  cp  (hl)                  ;compare HL to 0
  jr   nz,delayLoop         ;if not 0 then repeat until it is   
shuffleMessage
  ld a, (happyBirthday)     ;load the first character of the message
  push af                       ;save the first character of the message
  ld hl, happyBirthday      ;load the address of the message
  inc hl                        ;increase by one to get the second char
  ld de, happyBirthday      ;load the start of the message
  ld bc, 29                 ;number of times to loop
  ldir                      ;load HL (char 2) into DE (char 1) and repeat
  pop af                        ;get char 1 back    
  ld (de),a                 ;out it at the end of the string
  jr main                       ;repeat
happyBirthday
    DEFB    _H,_A,_P,_P,_Y,__,_B,_I,_R,_T,_H,_D,_A,_Y,__,_R,_A,_F,_F,_A,_E,_L,_E,__,_C,_E,_C,_C,_O,__

দুঃখিত, আমি এটির চালানোর কোনও লিঙ্ক পোস্ট করতে পারি না কারণ এটি ইটিইউইন (বা অন্যান্য এমুলেটর) .P ফর্ম্যাটে সংকলিত প্রোগ্রাম বা আপনার যদি জেডএক্সপ্যান্ড থাকে বা এটি লোড করার অনুরূপ থাকে তবে একটি আসল জেডি।

.P http://www.sinclairzxworld.com/viewtopic.php?f=11&t=2376&p=24988#p24988 এ ডাউনলোড করা যাবে


চমৎকার উত্তর! আমি জেড 80 মেশিন কোডে একটি অনুপস্থিত ছিল :-) এবং সাইটে আপনাকে স্বাগতম!
লুইস মেন্ডো

আপনি সম্ভবত চলমান প্রোগ্রামের একটি জিআইএফ সরবরাহ করতে পারেন?
লুইস মেন্ডো

দুঃখিত - আমার কাছে কোনও জিআইএফ তৈরির সফটওয়্যার নেই!
লার্ডো বফিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.