আমাকে একটি স্ক্রোলিং মার্কি তৈরি করুন


15

ভূমিকা

গর্জনকারী 80 এর কথা মনে আছে? মানে, তুমি জানো, 30 বছর আগের মতো? কোনও সেল ফোন নেই, ইন্টারনেট নেই, এটিএমের নেই, ফ্লুরোসেন্ট পোশাক (কী ছিল ?!) এবং স্ক্রলিং মার্কি ! না না না! অনলাইনে নয়, এলইডি লাইট সহ বাস্তবগুলি।

স্ক্রোলিং মার্কি

যেহেতু আমি একটি নস্টালজিক মেজাজে আছি তাই আমি চাই আপনি একটি স্ক্রোলিং মার্কি তৈরি করুন।

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম তৈরি করুন যেখানে আপনি একটি লাইনের স্ট্রিং প্রবেশ করতে পারেন। আপনার প্রোগ্রামটির জন্য একটি 80 টি অক্ষর প্রশস্ত স্ক্রোলিং মার্কি তৈরি করা প্রয়োজন, প্রয়োজনে পাঠ্যটি পুনরাবৃত্তি করুন।

বিধি

  • ব্যবহারকারীকে অবশ্যই ইনপুট হিসাবে আপনার প্রোগ্রামে একটি স্ট্রিং প্রবেশ করতে সক্ষম হতে হবে। স্ট্রিংটি একটি কমান্ড লাইন প্যারামিটার বা প্রোগ্রাম চলাকালীন প্রবেশ করা একটি স্ট্রিং হতে পারে।
  • আপনার প্রোগ্রামটি অবশ্যই অবিরত অবশ্যই 80 টি (অক্ষরের) অক্ষরের একটি স্ট্রিং মুদ্রণ করবে।
  • স্ট্রিংটি প্রতি 0.1 সেকেন্ডে আপডেট করা আবশ্যক (আরও বা কম; আমি এটির সময় দেবো না), প্রতিটি পুনরাবৃত্তিকে এক বামে একটি অবস্থানকে স্থানান্তরিত করতে হবে।
  • স্ট্রিং "আবর্তিত"। ব্যবহারকারীর সরবরাহিত স্ট্রিংয়ের শেষে, স্ট্রিংটির আরেকটি উদাহরণ উপস্থিত থাকতে হবে।
  • আপনার প্রোগ্রামটি অবশ্যই লাইনফিড ছাড়াই এক লাইনে আউটপুট প্রিন্ট করতে হবে ('\ n' এর পরিবর্তে '\ r' ব্যবহার করুন)
  • কোনও ব্যবহারকারী বাধা না দেওয়া অবধি আপনার প্রোগ্রামটি অবশ্যই বিজ্ঞাপন প্রচার করবে
  • এটি একটি কোডগল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড।
  • সেখানে 10% বোনাস (বৃত্তাকার হয় আপ একটি কালো পটভূমিতে লাল মুদ্রণের জন্য পরবর্তী পূর্ণসংখ্যা করার জন্য)।
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

পাইথনে রেফারেন্স বাস্তবায়ন ২.7

এই প্রোগ্রামটি গল্ফড নয়, তবে এটি একটি রেফারেন্স বাস্তবায়ন সরবরাহ করে (এবং এইভাবে আকারের উপরের সীমা)।

import time,sys
s=raw_input()*99
while 1:
    for i in range(80):
        print s[i:i+80]+'\r',
        sys.stdout.flush()
        time.sleep(0.1)

@ mbomb007 একই, কিন্তু একই নয়। এছাড়াও এই প্রশ্নটি দেখতে দেখতে (অনুপ্রেরণার জন্য ভাল) তবে এটি বিভিন্ন দিক থেকে ভিন্ন। এছাড়াও, আমি স্কোরগুলি (কোড দৈর্ঘ্য) বেশ হতাশাবোধক খুঁজে পেয়েছি। আমি সত্যিই মনে করি আমরা আরও ভাল করতে পারি!
agtoever

কোড গল্ফ হিসাবে জনপ্রিয়তা প্রতিযোগিতা হিসাবে?
সুপারজেডি ২৪

আমাদের কি ঠিক 100 এমএস অপেক্ষা করতে হবে ?
ডেনিস

1
@ ডেনিস ভাল, কম বা কম। আপনি যদি একটি চর সংরক্ষণ করতে 99 এ সেট করেন তবে ঠিক আছে। ধরা যাক অন্যান্য নির্দেশাবলীর কার্যকর করতে 0.01 সেকেন্ড সময় লাগবে। :-)
6:30

1
ইনপুট স্ট্রিংটি 80 টির বেশি অক্ষরের হলে কী হবে? আপনার উল্লেখ বাস্তবায়ন এবং আমার উত্তর, এর [80: 160] পেতে এবং তারপর গুলি ফিরে তিড়িং লাফ [0 ..] তারা দীর্ঘ স্ট্রিংয়ের শেষ প্রান্ত, যেমন এর একটি ইনপুট প্রিন্ট কখনো 1 2 3 4 5 6 7 8 9 10 11 ... 30056. সম্পর্কে পরে কেটে
TessellatingHeckler

উত্তর:


4

সিজেম, 31 বাইট

l80*{Dco_80<o(+es99+{es1$<}g;}h

ঠিক 100 এমএস অপেক্ষা করে।

এটি কেবলমাত্র অফিসিয়াল জাভা ইন্টারপ্রেটারের সাথে কাজ করবে , যেহেতু অনলাইন অনুবাদক প্রোগ্রাম থেকে বেরিয়ে আসার পরে কেবল আউটপুট দেখায়।

কালো পটভূমিতে লাল পাঠ্য 40 (বা 39) বাইটে 36 এর স্কোরের জন্য সম্ভব:

0000000: 6c 38 30 2a 7b 22 0d 1b 5b 33 31 3b 34 30 6d 22 6f 5f  l80*{"..[31;40m"o_
0000012: 38 30 3c 6f 28 2b 65 73 39 39 2b 7b 65 73 31 24 3c 7d  80<o(+es99+{es1$<}
0000024: 67 3b 7d 68                                            g;}h

কিভাবে এটা কাজ করে

l80*                             Read a line and repeat it 80 times.
    {                        }h  Do:
     Dco                           Print the character with code point 13.
        _80<o                      Print the first 80 characters of the string.
             (+                    Rotate the string one charcter to the left.
               es99+               Push the current time (ms) plus 99.
                    {     }g       Do:
                     es1$<           Compare the current time with the sum.
                                     Repeat the loop if 99 or less ms have passed.
                            ;      Discard the time stamp.
                                 Repeat the loop.

আমি সন্দেহ করি তারা এর চেয়ে কম আসবে না। অভিনন্দন!
15

দেখে মনে হচ্ছে এর বিপরীতে ভুল পথে চালিত ;হয়েছে
ভেন

@ স্থির, ধন্যবাদ!
ডেনিস

9

শক্তির উৎস, 118 113 112 108 102 101 99 96 - 10% = 86

কোড

$s=(Read-Host)*180;for(){Write-Host($s.substring(($i=++$i%80),80)+"`r")-N -F R -B 0;sleep -m 99}

যে সাবধানতার সাথে এটি এখন দ্বিতীয় চরিত্রের সাথে প্রথম লুপটি শুরু করে; নিয়মগুলি বলে না যে এটি স্ট্রিংয়ের সামনের দিক থেকে শুরু করতে হবে এবং প্রথমটি সামগ্রিকভাবে অন্তর্ভুক্ত করা হয়েছে, সুতরাং এটি আমার দ্বারা ঠিক আছে। আমি এটি একরকম 100 চরকে পেয়ে যাব - সম্পাদনা করুন: সম্পাদনাগুলি এটি 100 এর নীচে পাওয়ার জন্য @ কননার এলএসডাব্লু ধন্যবাদ।

নির্দেশনা

  1. পাওয়ারশেল চালান (স্বাভাবিক কনসোল, এটি পাওয়ারশেল আইএসই তে কাজ করে না)
  2. একক লাইন সংস্করণটি PoSH এ আটকান, এন্টার টিপুন
  3. একটি বার্তা লিখুন, এন্টার টিপুন
  4. ভাঙ্গতে Ctrl-C

আউটপুট

পাওয়ারশেল মার্কি উদাহরণ আউটপুট

মন্তব্য

ভেরিয়েবলের নাম এবং প্যারামিটারগুলি সহ আরও একটি পঠনযোগ্য সংস্করণ:

$test = (Read-Host) * 180
for () {
    Write-Host ($text.substring(($i=++$i%80), 80)+"`r") -NoNewLine -ForegroundColor Red -BackgroundColor Black
    sleep -Miliseconds 99
}
  • প্যারামিটারগুলিকে কেবল অনন্য হতে যথেষ্ট দীর্ঘ প্রয়োজন -F R, উদাহরণস্বরূপ, একটি রেড ফোরগ্রাউন্ড কালার সেট করতে যথেষ্ট অনন্য।
  • 'ব্লু' এর সাথে 'ব্লু' এর তুলনায় অনন্য হতে হবে, তবে -B 0এটি এনাম মান 0 রঙে সেট করে যা কালো হিসাবে ব্যাখ্যা করা হয়।

বিকল্প, আরও 'সঠিক' মার্কি:

রেফারেন্স কোডটি ৮০ টি অক্ষরের চেয়ে বেশি দীর্ঘ স্ট্রিং হ্যান্ডেল করে না,, 160 টি অক্ষরের অতীত বার্তায় যে কোনও কিছু এড়িয়ে যায় এবং এটি প্রতিটি 99 * লেন (স্ট্রিং) অক্ষরকে গ্লিট করে পুনরায় সেট করে। উদাহরণস্বরূপ, যদি সাইন প্রস্থটি 5 অক্ষর দীর্ঘ ছিল, এটি এটি করে:

   here is my long test input
 0 |here |            
 1  |ere i|          ^^^^ never shown
 2   |re is|
 3    |e is |
 4     | is m|
 0 |here |
 1  |ere i|
    ...

এই সংস্করণ সূচকগুলি সাইন প্রস্থের পরিবর্তে পাঠ্য দৈর্ঘ্যের মডুলো করে, তাই এটি পুরো স্ট্রিংয়ের মধ্য দিয়ে চলে। 106 - 10% = 95 অক্ষর।

$l=($s=Read-Host).Length;for(){Write-Host(($s*160).substring(($i=++$i%$l),80)+"`r")-N -F R -B 0;sleep -m 99}

বিকল্প: 118-10% = 106, প্রশ্নের মধ্যে .gif মত কোন চক্রটি স্বাক্ষর করুন

কারণ এটি আরও ভাল দেখাচ্ছে।

$s=' '*80+(read-host)+' '*80;for(){write-host($s.Substring(($i=++$i%($s.length-80)),80)+"`r")-N -F R -B 0;sleep -m 99}

বিকল্প সাইন উদাহরণ অ্যানিমেশন


1
আমি জানি এই উত্তরটি বেশ পুরানো, তবে এই প্রশ্নটি এখনই সম্মুখ পৃষ্ঠায় - Blaথেকে 0- Write-Hostরঙগুলিতে সংখ্যার ব্যাখ্যা করবে।
কলসডাব্লু

@ কননরএলএসডাব্লু ধন্যবাদ, আপনি এটি 100 টি অক্ষরের নিচে পেয়েছেন! আমি জানি না কেন আমি এক বছর আগে আপনার মন্তব্যটি কেন মিস করেছি (!) কেউ সবেমাত্র উত্সাহিত হয়েছিল এবং আমি কী তা দেখতে ফিরে এসেছি।
টেসেল্ল্যাটিংহেকলার 19

কোনও উদ্বেগ নেই, আমি মনে করি আপনি কিছু বাইট সংরক্ষণ করতেও পরিবর্তন while(1)করতে for()পারেন :)
কলসডাব্লু

@ কনররএলএসডাব্লু যাতে আপনি এটি করতে পারেন, তা করতে পারেন। (আমি সম্ভবত আমার বেশিরভাগ গল্ফগুলিতে এটি করতে পারি, এটি আমি সাধারণত ভাবি না)।
টেসেল্ল্যাটিংহেকলার

আপনি যেভাবে ব্যবহার করছেন for(), আপনি আরও $s=(Read-Host)*180;for(){for($s=(Read-Host)*180){
ক্লাইজস্টার্স

6

মতলব, 76 বাইট

আমি এখানে যা সুন্দর মনে করি তা হ'ল আপনার অ্যারে সূচক হিসাবে ভেক্টর থাকতে পারে। এটি সম্পর্কিত অ্যারে এন্ট্রিগুলির একটি ভেক্টরকে ফেরত দেয়, যা প্রদত্ত স্ট্রিংটি দৈর্ঘ্যের স্বতন্ত্রভাবে সংযুক্ত করা খুব সহজ করে তোলে।

a=input('');k=1:80;while 1;pause(.1);clc;k=mod(k+1,nnz(a));disp(a(k+1));end

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


সাথে দুর্দান্ত কৌশল clc। আপনি যোগ করতে ভুলে গেছি 's'মধ্যেinput
লুইস Mendo

তুমি কি বলতে চাও? এটি পুরোপুরি সূক্ষ্ম হিসাবে কাজ করে যেমনটি মাতলাব সংস্করণে আমার কাছে প্রবেশ (R2010b) রয়েছে।
flawr

1
এটি এখন যেমন আছে, আপনাকে উদ্ধৃতি সহ স্ট্রিংটি ইনপুট করতে হবে। স্ট্রিংয়ের বিষয়বস্তু সরাসরি প্রবেশ করতে (কুইট ছাড়াই) আপনার প্রয়োজনa=input('','s')
লুই মেন্ডো

এখন আমি দেখছি, আমি সেই বৈশিষ্ট্য সম্পর্কে সচেতন ছিলাম না। চশমাগুলির এটির প্রয়োজন নেই বলে আমি মনে করি 'ইনপুট হিসাবে ডিলিমিটেড স্ট্রিংগুলির প্রয়োজন । অনেক ভাষার একটি স্ট্রিং ডিলিমিটার প্রয়োজন হয় বা তারা কোনও কমান্ড লাইন যুক্তিকে একটি বাক্য আকারে ব্যাখ্যা করতে পারে (স্পেস দ্বারা পৃথক পৃথক শব্দ) যাইহোক একাধিক যুক্তি হিসাবে।
flawr

4

কিউবাসিক, 116 113 বাইট - 10% = 105 102

INPUT s$
COLOR 4
1CLS
FOR i=a TO a+79
?MID$(s$,i MOD LEN(s$)+1,1);
NEXT
?
a=a+1
t=TIMER+.1
2ON(TIMER<t)+2GOTO 2,1

মার্কি বিক্ষোভ

কিছু মন্তব্য সহ এখানে একটি ফর্ম্যাট সংস্করণ:

INPUT s$
COLOR 4   ' 4 is the color code for red (the background's already black)

1 CLS   ' CLear Screen (and mark this as line number 1)

' The variable a represents an offset from the beginning of the string
' As a numeric variable, it is 0 at the beginning of the program
FOR i = a TO a + 79
    ' Print i'th character mod string length (+ 1 because QBasic strings
    ' are 1-indexed)
    PRINT MID$(s$, i MOD LEN(s$) + 1, 1);
NEXT i
PRINT
a = a + 1

' Do a busy-wait for .1 seconds
' (Unfortunately, QBasic's SLEEP command only takes integer values)
' Set t to the time we want to stop waiting, .1 seconds in the future
t = TIMER + .1
' We want to stay on line number 2 while TIMER < t; once that condition is
' no longer true, we want to goto the top of the outer loop (line number 1)
' Since true is -1 and false is 0 in QBasic, adding 2 to the conditional
' gives 1 for true and 2 for false; we can pass these values to the
' ON ... GOTO statement to branch conditionally
2 ON (TIMER < t) + 2 GOTO 2, 1

কয়েকটি নোট:

  • লুপের PRINTপরে কেন প্রয়োজনীয় তা আমি জানি না FORCLSপ্রতিটি বারের উপরের বাম কোণে কার্সারটি পুনরায় সেট করা উচিত। তবে কিউবি 64 তে কমপক্ষে যদি আমি অতিরিক্ত না রাখিPRINT , মার্কি প্রথমটির পরিবর্তে দ্বিতীয় লাইনে শেষ হয়। কারও কাছে ডসবক্স বা সামসুচে কিউব্যাসিক স্থাপন করা থাকলে আমি জানতে আগ্রহী যে সেখানে সেখানে একই জিনিস ঘটে কিনা বা এটি কিউবি 64 বাগ রয়েছে bu
  • কোডটিতে একটি ছোট গণ্ডো রয়েছে কারণ এটি TIMERবিলম্বের জন্য (মধ্যরাত থেকে সেকেন্ডের সংখ্যা) উপর নির্ভর করে । যদি মধ্যরাতে কোডটি চলমান থাকে তবে মার্কি আটকে যাবে কারণ TIMERএটি পুনরায় সেট হবে 0এবং tতারপরে সর্বদা কম থাকবে ।

আমার প্রথম ভাষা! আইআইআরসি, যাইহোক, কিউবি ৪.৫-তে, একটি মুদ্রিত স্ট্রিংয়ের শেষে একটি সেমিকোলন মানে PRINT বিবৃতিটি কোনও ক্যারেজ রিটার্ন মুদ্রণ করে না।
বিজিস্ট্যাক

@ বিজিস্ট্যাক 15 আমারও : ^ ডি ইস্যুটি সত্যিকার অর্থে নয় PRINTতবে - পরে, আগে যা ছাপা হয়েছিল তা CLSবিবেচনাধীন CLSনয়, পরবর্তী PRINTবিবৃতিটি 1,1 এ আউটপুট করা উচিত; তবে পরিবর্তে, আমি এমন একটি অবস্থানে চলে এসেছি যেখানে এটি আউটপুট ২,০০০ এ পৌঁছেছে।
DLosc

4

পার্ল, 99 98 বাইট (-10% = 89)

$|=@_=split('',pop);printf("\e[31m\r%.80s",join('',@_)x80)while select($a,$a,$a,.1)|push@_,shift@_

কমান্ড লাইন প্যারামিটার থেকে এটির ইনপুট নেয়।

perl marquee.pl "Welcome to Programming Puzzles & Code Golf "

3

পিবি , ⌈ (216 + 3) * 0.9⌉ = 198

দোভাষীর পতাকার জন্য +3 বাইট d=1

c^w[Y=-1]{w[B!0]{>}t[X]<[X-79]w[X!0]{t[T-1]w[T=-1]{t[0]}<}vw[T=0]{^w[B!0]{t[B]^b[T]>v}<[X]^w[B!0]{t[B]vw[B!0]{>}b[T]<[X]^w[B=0]{>}b[0]>}v}}^w[1=1]{<[X-80]w[X!0]{<t[B]vb[T]^}w[B!0]{t[B]<b[T]>>}<[X]<t[B]w[B!0]{>}<b[T]}

একটি দুর্দান্ত ভয়ঙ্কর স্কোর, তবে এই ভাষায় কিছু করা কতটা কঠিন তা বিবেচনা করে এটি আরও খারাপ হতে পারে। এই উত্তরটির অনুপাত (লাল টেক্সট পেতে ব্যবহৃত বাইট) থেকে (লাল পাঠ্য হওয়া থেকে বোনাস) সত্যিই ভাল, পুরো আউটপুট কেবলমাত্র সাথে লাল হয়ে যায়c শুরুতে হয়ে যায়!

প্রতিটি টিকের মধ্যে সময় ইনপুট স্ট্রিংয়ের দৈর্ঘ্যের উপর নির্ভর করে পরিবর্তিত হয় তবে এটি 0.1 সেকেন্ডের কাছাকাছি।

যাইহোক, এই প্রোগ্রামটির আউটপুট মোট আবর্জনার মতো দেখায় কারণ দোভাষীটি খুব খারাপ। প্রতিটি মিলিসেকেন্ড এটি টার্মিনাল সাফ করে এবং সবকিছু পুনরায় আঁকায়, তাই এটি সত্যিই ঝলকানি হয়ে ওঠে।

মন্তব্য সহ:

c           # Change paint colour to red

^w[Y=-1]{   # While Y=-1 (arbitrary condition we can break later)

    w[B!0]{>}   # Go to end of input

    t[X]        # Save length of input in T

    # SET T TO MAX(T-79, 0)

    <[X-79]     # Go to (79, -1)

    w[X!0]{     # While X is not 0
        t[T-1]      # Subtract 1 from T
        w[T=-1]{    # If T is now negative
            t[0]        # Set it back to 0
        }
        <         # Move left (position doesn't matter except to end the loop eventually)
    }

    # DONE SETTING T TO MAX(T-79, 0)
    # If T == 0, the string needs to be doubled. Otherwise this part of the program is done

    v           # Move down to break the loop unless this is specifically undone
    w[T=0]{     # While T == 0
        ^w[B!0]{    # For each byte of input
            t[B]^b[T] # Copy it up 1 place
            >v        # Go to the next byte
        }
        <[X]^     # First byte of the copy
        w[B!0]{   # For each byte of the copy
            t[B]      # Save the byte's value
            vw[B!0]{>}# Go to the first empty spot after the original
            b[T]      # Write the saved value
            <[X]^w[B=0]{>} # Go back to the first byte of the copy
            b[0]>     # Erase it and go to the next one
        }
        v       # Back to Y=-1 to reset the loop from the very beginning
    }

}

# After ALL OF THAT nonsense, we're now at (0, 0) and the input string is guaranteed to be
# at least 80 characters long

^
w[1=1]{       # While 1=1 (should hold true until mathematics itself breaks down)
    <[X-80]        # Go to the 81st character
    w[X!0]{        # While X!=0
        <t[B]vb[T]^    # Go left and copy that character down
    }

    w[B!0]{      # For each byte in the string
        t[B]<b[T]>>  # Copy that byte left
    }

    <[X]<t[B]    # Go get the first value (copied to (-1, -1))
    w[B!0]{>}<b[T]# Bring it to the end of the string
}

3

পার্ল - 120 বাইট (-10% = 108)

$|=1;$_=<>;chomp;for(;;){print "\e[31m",substr(" "x80 .$_,$p++,80)," \r";select($z,$z,$z,0.1);if($p>length()+80){$p=0}}

পার্ল মার্কি


2

মতলব, ⌈188 * .9⌉ = 170

এটি মতলব সংস্করণ R2014b বা তার চেয়েও বেশি ক্ষেত্রে কাজ করে। ফলাফল একটি চিত্র উইন্ডোতে প্রদর্শিত হয়।

h=text(.1,.1,repmat(' ',1,80),'fontn','courier','ba','k','co','r');set(1,'pos',[90 90 990 90]);axis off
s=input('','s');n=0;while 1
n=n+1;pause(.1)
h.String=s(mod((0:79)+n,numel(s))+1);end

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

এখানে চিত্র বর্ণনা লিখুন


2

স্পেসবিএএস, ১৩০ বাইট (-১০% = ১১7)

মূল স্ট্রিংটিকে 80 বা ততোধিক অক্ষর তৈরি করতে এটি গুণ করে, তারপরে একে ঠিক 80 এ ছড়িয়ে যায়।

TEXT স্পেসবিএজে একটি কমান্ড যা একইভাবে কাজ করে PRINT (এই উদাহরণে) তবে একটি চরিত্র সংরক্ষণ করে।

দ্য SCALEকমান্ড কোডে কিছু অতিরিক্ত অক্ষর যোগ করেন, কিন্তু তোলে চেহারা আরো তাবু পর।

আপনি Esc টিপুন না হওয়া পর্যন্ত প্রোগ্রামটি চলতে থাকবে।

1 INPUT s$: LET s$=s$*CEIL(80/LEN s$)
2 TEXT PAPER 0;INK 2;SCALE 1,2;AT 1,1;s$( TO 80)
3 LET s$=s$(2 TO)+s$(1): PAUSE 5: GO TO 2

এখানে চিত্র বর্ণনা লিখুন


2

পার্ল, (৩ (cha০ টি অক্ষর - বোনাসের জন্য 10%)

অন্যদের কাছে একেবারে আলাদা সমাধান নয়, তবে আমি এটি তৈরিতে আমার সময় নষ্ট করেছি, তাই আমি ভেবেছিলাম এটিও পোস্ট করব!

$_=<>;s/
/ /;print"\x0d\x1b[91m",substr"$_"x80,$z++%y///c,80 until`sleep .1`

এএনএসআই কোডের জন্য ইউনিক্স-সামঞ্জস্যপূর্ণ টার্মিনাল এবং কোর্টিলগুলিতে কল করার উপর নির্ভর করে sleep\x..উপরের দুটি অক্ষর প্রকৃতপক্ষে এই হেক্স ডাম্প অনুসারে একটি আক্ষরিক লাইন-ফিড এবং এস্কেপ চর:

0000000: 245f 3d3c 3e3b 732f 0a2f 202f 3b70 7269  $_=<>;s/./ /;pri
0000010: 6e74 220d 1b5b 3931 6d22 2c73 7562 7374  nt"..[91m",subst
0000020: 7222 245f 2278 3830 2c24 7a2b 2b25 792f  r"$_"x80,$z++%y/
0000030: 2f2f 632c 3830 2075 6e74 696c 6073 6c65  //c,80 until`sle
0000040: 6570 202e 3160                           ep .1`

2

রুবি, 79 76 75 বাইট

t,i=gets.chop*81,0
loop{system'cls'
$><<t[(i=(i+1)%80)..i+79]
sleep 0.1}

আমি এখনও রুবি বিশেষজ্ঞ নই, সম্ভবত গল্ফ হতে পারে।

লাল এবং কালো একই স্কোর সহ:

t,i=gets.chop*81,0
loop{system'cls&color 4'
$><<t[(i=(i+1)%80)..i+79]
sleep 0.1}

2

পার্ল, 84 বাইট (- 10% = 76)

$_=' 'x80 .pop;$|=print"\b \r\e[31m".substr$_,++$p% length,80until select$z,$z,$z,.1

এটি একটি কমান্ড লাইন আর্গুমেন্ট নেয় যা মার্কিটির পাঠ্য।

ব্যাখ্যা:

  1. পাঠ্যে 80 টি স্পেস প্রস্তুত করুন এবং এতে সঞ্চয় করুন $_
  2. ব্যাকস্পেস ( \b) এবং একটি স্পেস ( ) মুদ্রণ করুন । এটি পূর্ববর্তী মুদ্রণ থেকে শেষ অক্ষরটি সরিয়ে দেয়। তারপরে গাড়ীর রিটার্ন এবং রঙ মুদ্রণ করুন।
  3. অবস্থান থেকে পাঠ্যের 80 টি অক্ষর মুদ্রণ করুন $p
  4. $p = ($p+1) % length of text
  5. 0.1 সেকেন্ডের জন্য ঘুমান

2

বাশ, 121 বাইট

A=$(printf ' %.s' {1..80})$1
while :; do
printf "%s \r" "${A:((P++)):80}"
if [ $P == ${#A} ];then
 P=0
fi
sleep 0.1
done

1

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

import time;s=input()*80
while 1:print("\033[2J",end=s[:80],flush=1);s=s[1:]+s[0];time.sleep(.1)

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

flushপাইথন 3 তে কীওয়ার্ডের জন্য হুররে , সুতরাং আমাদের কোনও ব্যয়বহুল sys.stdout.flush()কল করতে হবে না ।


1

সি, 293 269 ​​বাইট

(পাঠযোগ্যতার জন্য নিউলাইনগুলি যুক্ত করা হয়েছে)

এটি ইওএফ দ্বারা সমাপ্ত স্ট্যান্ডার্ড ইনপুট থেকে ইনপুট নেয়; সুতরাং স্ট্রিং, একটি নতুন লাইন এবং তারপরে EOF (যেমন, Ctrl ^ D) প্রবেশ করা ভাল।

#include<stdio.h>
#include<string.h>
#define Z '\0'
main(){int i=0,j;char m[80],o[80],n[2];
while(~(j=getchar())&&i<80)j-'\n'?m[i++]=j:0;m[i]=Z;
while(1){for(i=0;m[i]-Z;++i){strcpy(o,&m[i]);
for(j=0;j<i;)*n=m[j++],n[1]=Z,strcat(o,n);
printf("\x1b[40;31m%s\x1b[0m\r",o);}}}

Ungolfed:

#include <stdio.h>
#include <string.h>
#define ANSI_COLOR_SET "\x1b[40;31m"
#define ANSI_COLOR_RESET "\x1b[0m"

int main(void)
{
  int i, j, c;
  char msg[80], out[80], next[2];

  for (i = 0; (c = getchar()) != EOF && i < 80; ++i) {
    if (c != '\n') {
      msg[i] = c;
    }
  }
  msg[i - 1] = '\0';

  while (1) {
    for (i = 0; msg[i] != '\0'; ++i) {
      strcpy(out, &msg[i]);
      for (j = 0; j < i; ++j) {
        next[0] = msg[j];
        next[1] = '\0';
        strcat(out, next);
      }
      printf(ANSI_COLOR_SET "%s\r" ANSI_COLOR_RESET, out);
    }
  }
  return(0);
}

1

স্মাইলব্যাসিক বিগ, by৯ বাইট

COLOR 3INPUT S$@L
CLS
FOR I=0TO 79?S$[(I+O)MOD LEN(S$)];
NEXT
WAIT 6O=O+1GOTO@L

আমার প্রায়শই একটি দুর্দান্ত গ্রাফিকাল সমাধান হয়েছিল যখন আমি বুঝতে পারলাম এটি একবারে 1 টি সম্পূর্ণ চরিত্রটি স্ক্রোল করতে হবে।


1

জেলি , 20 19 18 বাইট

  • -1 বাইটটি প্রথম দ্বারা প্রতিস্থাপন 80করে (= 256) কারণ এটি কমপক্ষে গুণতে হবে 80
  • Çß(1 Ç1¿) থেকে অসীম লুপ পরিবর্তন করে -1 বাইট ।

ẋ⁹ḣ80ṙ1;”ÆṄœS.1
Çß

@ ডেনিসের উত্তর থেকে কিছু কৌশল এখানে । জেলি চ্যালেঞ্জের চেয়ে নতুন, তবে এটির জন্য বিশেষভাবে উপযুক্ত নয়। কীভাবে উন্নতি করতে হবে সে সম্পর্কে পরামর্শগুলি স্বাগত! যদি আপনার কনসোলটি utf-8 এ থাকে তবে চালানexport LC_ALL=en_US চেষ্টা করার আগে বা অনুরূপ।

উদাহরণ

https://gyazo.com/f3594391a6b4d459a9d30bd47cf598b1

ব্যাখ্যা

ẋ⁹ḣ80ṙ1;”ÆṄœS.1         Monadic helper link - Argument: s
ẋ⁹                      Repeat s 256 times.
  ḣ80                   Head. Set {output} to first 80 characters from repeated s.
     ṙ1                 Rotate. Rotates {output} one character to the left.
       ;Ӯ              Concatenate character 0D, the carriage return, to {output}.
          Ṅ             Print and return {output}.
           œS.1         Wait 0.1 seconds before returning {output} from the
                        helper link.

Çß                      Monadic main link - Argument: s
Ç                       Execute helper link with argument s. Replace s by
                        result of helper link.
 ß                      Execute this link with argument s (while true).

0

LOVE2D লুয়া, 197-10% = 178 বাইট

f=io.open("t.t"):read().."  "love.graphics.setColor(255,0,0)love.window.setMode(640,14)function love.draw()s=""for i=1,80 do n=i+os.clock()s=s..f:sub(n%#f,n%#f) end love.graphics.print(s,0,0)end

মূলটিতে 'টিটি' নামে একটি ফাইলে ইনপুট থাকা দরকার, এভাবে স্কোরটিতে 3 অতিরিক্ত বাইট যুক্ত করা হয়েছিল।

কার্যক্ষমতার ক্ষেত্রে সত্যিকারের মৌলিক, ৮০ টি পুনরাবৃত্তির লুপের জন্য, ইনডেক্সের সাথে ইনডেক্সে অক্ষর যুক্ত করুন বর্তমান সময়ের স্ট্রিংয়ের দৈর্ঘ্য দ্বারা সংশোধিত সেকেন্ডের মধ্যে ইনপুটটির পুনরাবৃত্তি 80 অক্ষর দীর্ঘ স্ট্রিং প্রদান করে, যা বাম দিকে সরে যায় সময় হিসাবে যায়

আমি হাসির জন্য LOVE2D ব্যবহার করেছি।


0

সিনক্লেয়ার জেডএক্স 8১ / টাইমেক্স টিএস 1000/1500 বেসিক, 110 বাইট 182 বাইট (তালিকার জন্য)

1 LET A$="I LIKE TO SCROLL IT... HELLO MUM, BY DONKEYSOFT... THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG... STILL SCROLLING... "
2 PRINT AT 0,0;A$(1 TO 80)
3 LET A$=A$(2 TO )+A$(1)
4 GOTO 3

এটি স্ট্রিংয়ের প্রথম 32 80 টি অক্ষরটি A$স্ক্রিন পজিশনে 0,0 পংক্তিতে দুটি লাইনে মুদ্রণ করে কাজ করে এবং তারপরে স্ট্রিংটি অবস্থান 2 থেকে লাইন 3-এ স্টিংয়ের শেষে হ'ল (সিনক্লেয়ার জেডএক্স 81 বেসিক সূচকগুলি 1 থেকে শূন্য নয়) ), সুতরাং প্রথম অক্ষরটি শেষের দিকে যুক্ত করুন এবং এটিকে আবার চলকটিতে প্রেরণ করুন A$; তারপরে লাইন ২-এ ফিরে শর্তহীন লুপ রয়েছে।


0

কমোডোর 64, 434 বাইট

0 A$="I LIKE TO SCROLL IT... SAMPLE SCROLLY ROUTINE FOR CODE-GOLF MADE BY DONKEYS
1 A$=A$+"OFT MMXVII... HELLO MUM... SCROLLING IS FUN, INNIT? GREETZ TO ALL...
2 POKE53280,6:PRINT"{CLEAR}";
3 PRINTLEFT$(A$,40)"{HOME}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}"MID$(A$,41,40)"{HOME}";
4 FORI=0TO99:NEXT:A$=RIGHT$(A$,142)+LEFT$(A$,1):GOTO3

যেহেতু এটি দেখানোর জন্য 80 টি অক্ষর প্রয়োজন, এবং ডিফল্টরূপে সি 64 কেবলমাত্র 40 টি অক্ষর, তারপরে স্ক্রোলির 40 টি অক্ষর স্ক্রিন অঞ্চলের শীর্ষ লাইনে মুদ্রিত হয় যখন অন্য 40 টি নীচের অংশে প্রিন্ট করা হয়।

{HOME}এবং অন্যান্য প্রতীকগুলি পিইটিএসসিআই হিসাবে কী অনুবাদ করে তা পরিষ্কার করার জন্য এখানে আমার এমুলেটর থেকে নেওয়া একটি স্ক্রিন গ্রাব রয়েছে:

কমডোর 64 দুটি লাইনে স্ক্রোল করুন

আমি যখন সিবিএম পিআরজি স্টুডিও ইনস্টল করব (বা যখন আমি কর্মস্থলে মধ্যাহ্নভোজনে আসছি না) তখন আমি একটি পূর্ণ গল্ফযুক্ত সংস্করণ করব।



0

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

<?php
$s="\e[0;31;40m".substr(str_repeat($argv[1],160),0,160);
while(true){for($i=0;$i<=80;$i++){usleep(100000);echo substr($s,$i)."\r";}}die;
  • সাথে কল php -f marquee.php hello\ world"হ্যালো ওয়ার্ল্ড" স্ট্রিংকে ।
  • কিছু কারণে প্রাথমিক স্ট্রিংয়ের জন্য আমাকে 160 টি অক্ষর করতে হয়েছিল, অন্যথায় আউটপুটটি এমন কিছু হবে hello worldddddddddddddddddddddddddddddddddddddddতবে এটি কেবল 80 টি অক্ষরের মধ্য দিয়ে লুপ করবে - আমি আশা করি যে এখনও গণনা করা হচ্ছে।

https://gyazo.com/4c433abf04d71ca7ebb63a0889ca705d

এটি একটি দীর্ঘ দিন হয়েছে, সম্ভবত এটির উন্নতি করার জন্য আমি কিছু করতে পারি


0

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

for(;;usleep(1e5))echo substr(str_repeat($s=$argv[1],80),$i=++$i%strlen($s),80),"\r";

প্রথম কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; সাথে চালানো-nr

দ্বিতীয় চরিত্রটি দিয়ে স্ক্রোলিং শুরু হয়। প্রথম অক্ষরটি শুরু করতে একটি বাইট যুক্ত করুন:
=++$i% সাথে %=এবং ;;সাথে প্রতিস্থাপন করুন ;;$i++,

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