একটি "হ্যাকার টাইপার" প্রোগ্রাম তৈরি করুন যা তার নিজস্ব উত্স কোডটি উপস্থাপন করে


25

আপনি হ্যাকার Typer অপরিচিত হন, দেখুন hackertyper.net । সংক্ষেপে, এটি একটি প্রোগ্রাম যা কৌতুক প্রভাবের জন্য কীস্ট্রোক প্রতি কোড বেসের এক অংশকে আউটপুট করে। কিন্তু, হ্যাকারটিপার.net সংস্করণটি প্রয়োগ করা খুব সহজ। কোডের একটি স্বেচ্ছাসেবী থেকে এটি একবারে তিনটি অক্ষরকে আউটপুট করে । এই চ্যালেঞ্জের জন্য, একটি প্রোগ্রামকে অবশ্যই নিজস্ব উত্স কোড আউটপুট করতে হবে এবং কীস্ট্রোকের জন্য একটি স্পেস ডিলিমিট কোডের মুদ্রণ করতে হবে ।

বিস্তারিত

  • প্রোগ্রামের জন্য কোনও ফাইলের নাম হার্ড কোড করতে পারে না; এটি অবশ্যই তার নামটি গতিশীলভাবে নির্ধারণ করবে। প্রোগ্রামটি যদি কোনও নির্বাহযোগ্যের সাথে সংকলিত হয় তবে এটি এক্সিকিউটেবলের নামে স্ট্যান্ডার্ড ফাইল এক্সটেনশন যুক্ত করতে পারে (উইন্ডোজ ব্যবহার করা হলে .exe বাদে) এবং ধরে নিতে পারে যে উত্স ফাইলটি এক্সিকিউটেবল ডিরেক্টরিতে রয়েছে। উদাহরণস্বরূপ, যদি কোনও সি এক্সিকিউটেবলকে "হ্যাকার" নাম দেওয়া হয়, তবে এটির ডিরেক্টরি কোডটিতে "হ্যাকার। সি" নামের একটি ফাইল থেকে তার উত্স কোডটি টানতে হবে। যদি কোনও সংকলিত প্রোগ্রামের একটি এক্সটেনশান থাকে, তবে এর উত্স কোডের নাম নির্ধারণ করার আগে এটিকে বাদ দেওয়া উচিত ("typer.exe" -> "typer.cs")।
  • প্রোগ্রামগুলিতে কমপক্ষে 5 টি স্পেস থাকতে হবে এবং প্রতিটি জায়গার মধ্যে কমপক্ষে একটি অক্ষর থাকবে। এর অর্থ হল যে এই চ্যালেঞ্জটির জন্য ক্ষুদ্রতম সম্ভাব্য আকারটি 9 বাইট। কর্মসূচির কার্যকারিতার জন্য ফাঁকা স্থানগুলি গুরুত্বপূর্ণ হবে না।
  • যে কোনও বিন্যাস (ইনডেন্টেশন, নতুন লাইন ইত্যাদি) আউটপুটটিতে বজায় রাখতে হবে। এই ফর্ম্যাটিংটি কোডটি দিয়ে প্রিন্ট করা যেতে পারে যা এটি এগিয়ে যায় বা এটি অনুসরণ করে, কী গুরুত্বপূর্ণ তা হল বিন্যাসটি বজায় রাখা উচিত।
  • আপনার পছন্দের ভাষায় শূন্যস্থান প্রয়োগের অন্য কোনও উপায় না থাকলে 5 টি স্থানের প্রয়োজনীয়তা পূরণের জন্য মন্তব্যগুলি ব্যবহার করা এড়িয়ে চলুন।

সম্পাদনা : নতুন লাইনগুলি খণ্ড বিভাজক হিসাবে ফাঁকা স্থান বা তার পাশাপাশি ব্যবহার করা যেতে পারে।


1
আমি একটু বিভ্রান্ত প্রোগ্রামটি কি কুইন হওয়া উচিত, না?
অরবি

8
আপনি যেভাবে এটি বর্ণনা করেছেন তা এটিকে শোনায় যেন এটি মূল উত্স ফাইল থেকে কোডটি পড়তে গ্রহণযোগ্য, যা কোনও কুইন হবে না। আমি মনে করি প্রোগ্রামটি যদি সত্যিকারের কুইন হতে হয় তবে এটি আরও ভাল প্রতিযোগিতা হবে।
অরবি

1
@ অরবি আমি বলব যে উত্সটি পড়ার অনুমতি রয়েছে কিনা তা নির্বিশেষে প্রোগ্রামটি প্রচলিত অর্থে কোয়েন নয়। কুইনের ইনপুট নেই তবে এই প্রোগ্রামগুলি স্পষ্টভাবে করে।
ক্যালভিনের শখ

@ ডিজেজেপিপার আপনার তৃতীয় বুলেট পয়েন্টটি এটিকে শ্বেত স্পেস গণনার কোনও অনুক্রম হিসাবে ডিলিমিটার হিসাবে শোনায় তবে আপনি বিশেষত বলেছেন যে কেবল স্থান রয়েছে। আপনি কি স্পষ্ট করতে পারেন?
ক্যালভিনের শখ

2
এই চ্যালেঞ্জটি প্রোগ্রামটির নিজস্ব উত্স কোড পড়ার জন্য উত্সাহ দেয়, একটি মহড়া যা সাধারণত কুইন্স তৈরিতে ভারবোটেন।
ফেয়ার্সাম

উত্তর:


13

বাশ, 51 58

for w in $(<$0);do read -sn 1;printf -- "$w ";done

2
এটি বাশ, শেল নয়: এটি ড্যাশের অধীনে কাজ করবে না, ( 2: read: Illegal option -s)
এফ। হাউরি

1
ব্যাশ ধরে নিয়ে, করতে প্রতিস্থাপন cat $0এবং টিলড চিহ্ন দিয়ে$(<$0)

প্রতিক্রিয়া জন্য @ ব্রস্লো থেক্স; লেবেল করা ব্যাশ, একই দৈর্ঘ্য
উইল

1
@ উইল সমস্যা নেই হয় IFS=\ আসলে প্রয়োজন যদি আপনি কুঁড়েঘর বাদ? ডিফল্ট আইএফএস হ'ল এমন একটি বিষয় IFS=$'\n\t ', এবং যেহেতু আপনার আর একটি নতুন লাইন নেই, তাই আমি মনে করি না যে আপনি এটি কেবলমাত্র স্থানের মধ্যে সীমাবদ্ধ করতে হবে।

1
for w in `<$0`;{ read \-sn1;printf $w\ ;}
জিমি 23013

21

এইচটিএমএল এবং জাভাস্ক্রিপ্ট, 123

<head></head><body onload="s=(a=document.all)[i=0].innerHTML" onkeyup="a[2].textContent += s.split(/(?= )/)[i++%6]"></body>

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

এবং এখানে একটি স্টাইলযুক্ত সংস্করণ (170 টি অক্ষর):

<head></head>
<body style="background:#000;color:lime" onload="s=(a=document.all)[i=0].innerHTML" onkeyup="a[3].textContent+=s.split(/(?=\s)/)[i++%6]">
<pre></pre></body>

আমি একটি ডেমো তৈরি করেছি । এটি সংশোধিত হয়েছে কারণ জেএস বিন অনেকগুলি অতিরিক্ত কোড যুক্ত করেছেন, তবে সাধারণ ধারণাটি একই।


2
আমি <html> এবং <হেড> ট্যাগ এবং ক্লোজার </ em> না ছাড়াই যদি এটি সঠিকভাবে রেন্ডার না করে তবে আমি অবাক হব। এক্ষেত্রে সমস্ত ব্রাউজারগুলি কতটা ক্ষমাশীল তা আপনি অবাক হবেন।
উইল

2
@ উইল ধন্যবাদ আমি অন্তর্ভুক্ত করার কারণটি <head>ছিল ব্রাউজারটি এটি না থাকলে এটি যুক্ত করবে, তাই এটি সর্বদা প্রদর্শিত হবে get আমি <html>যদিও সম্পর্কে ভুলে গেছি ।
grc

12

পার্ল + টার্ম :: রিডকি, 56 বাইট

use
Term'ReadKey;ReadMode
4;open
0;ReadKey,print
for
<0>

আসল অনুপ্রেরণার জন্য এটিসুইটস ব্ল্যাকনটকে ধন্যবাদ জানাতে এবং প্রস্তাব দেওয়ার জন্য এবং প্রিমো করার জন্য ধন্যবাদ ।open 0<0>

নোট করুন যে পরবর্তীকালের forনতুন লাইনটি নির্ধারিত সর্বনিম্ন পাঁচটি পর্যন্ত শ্বেত স্পেস গণনা আনতে আমার অন্য কোথাও একটি নতুন নিউলাইন অন্তর্ভুক্ত করা দরকার except

আরও মনে রাখবেন যে, এইসুইটসআইবল্যাক নটের জমা দেওয়ার মতো, এই প্রোগ্রামটির জন্য সিপিএএন থেকে টার্ম :: রিডকি মডিউলটি প্রয়োজন । ডেবিয়ান / উবুন্টু লিনাক্সে, এই মডিউলটি ইতিমধ্যে উপস্থিত না থাকলে, কমান্ডের সাহায্যে সহজেই ইনস্টল করা যাবে sudo apt-get install libterm-readkey-perl

এছাড়াও, কয়েকটি অক্ষর সংরক্ষণ করতে, এই প্রোগ্রামটি প্রস্থান করার সময় ইনপুট মোডটিকে স্বাভাবিক হিসাবে পুনরুদ্ধার করে না, সুতরাং আপনি কী টাইপ করছেন তা দেখতে আপনি নিজেকে অক্ষম দেখতে পাচ্ছেন। শেল কমান্ড কার্যকর করা stty saneবা resetএটি ঠিক করা উচিত। এই সমস্যাটি 10 ​​টি অতিরিক্ত বাইটের সাহায্যে স্থির করা যেতে পারে:

use
Term'ReadKey;ReadMode
4;open
0;ReadKey,print
for<0>;ReadMode
0

বোনাস: খাঁটি কুইন, ৮১ বাইট

$_=q{use
Term'ReadKey;ReadMode
4;ReadKey,say
for
split$/,
"\$_=q{$_};eval"};eval

আবার, কমার পরে নতুন লাইনটি কেবল পাঁচটি সাদা স্পেস পূরণের প্রয়োজন।

উপরের 56-বাইট প্রোগ্রামের বিপরীতে, এই সংস্করণটির আসলে নিজস্ব উত্স কোডটি পড়ার দরকার নেই, কারণ এটি একটি কুইনের উপর ভিত্তি করে - বিশেষতঃ এই কুইনে:

$_=q{say"\$_=q{$_};eval"};eval

এই কুইন সম্পর্কে দুর্দান্ত জিনিসটি এটির পুনরাবৃত্তি না করে সহজেই q{ }ব্লকের মধ্যে একটি নির্বিচারে "পেਲੋਡ" বহন করতে পারে । যদিও এটি <0>সংক্ষিপ্ততায় বেশ হারাতে পারে না , এটি বেশ কাছাকাছি আসে।

দ্রষ্টব্য: এই প্রোগ্রামটি পার্ল ৫.১০+ sayবৈশিষ্ট্যটি ব্যবহার করে এবং সুতরাং -M5.010(বা -E) কমান্ড লাইন সুইচটি ব্যবহার করা প্রয়োজন। মেটা সম্পর্কে প্রতিষ্ঠিত sensকমত্যের ভিত্তিতে, আধুনিক ভাষার বৈশিষ্ট্যগুলি সক্ষম করতে ব্যবহৃত এই জাতীয় স্যুইচগুলি অতিরিক্ত অক্ষর হিসাবে গণনা করে না । আমি ছাড়াই সবচেয়ে সংক্ষিপ্ত সমাধানটি পাই say83 টি বাইট:

$_=q{use
Term'ReadKey;ReadMode
4;ReadKey,print
for
split/^/,
"\$_=q{$_};eval"};eval

এগুলি উভয়ই (শেষ দুটি লাইনে যোগদান করে) সন্নিবেশ করে আরও টার্মিনাল বান্ধব করা যায়:

;ReadMode
0

গত সামনে }


কি দারুন. এইমাত্র. খুব ঠান্ডা.
এইসুইটসআইবলাকনট

+1, তবে আমি stty saneপরিবর্তে টাইপ করার অভ্যাস করার পরামর্শ দিই reset(যা কোনও কোনও ওএসে কখনও কখনও কিছু টার্মিনাল প্যারামিটারগুলি পুনরায় সেট করার চেয়ে আরও কিছু করতে পারে ^^)
অলিভিয়ার ডুলাক

খুব সুন্দর সমাধান। FWIW, open F,$0এবং <F>প্রতিস্থাপিত করা যেতে পারে open 0এবং <0>। এছাড়াও, আমি যুক্তি দেব যে মেটাতে একটি পোস্ট সত্যই conক্যমত্য গঠন করে না। বিকল্পটি "ভাষাটিকে একটি নির্দিষ্ট বিন্দুতে নিয়ে-M5.01 আসে না " , যেমনটি লেখকের পরামর্শ অনুযায়ী এটি বৈশিষ্ট্যগুলিকে সক্ষম করে ables পার্লের কোনও সংস্করণ নেই যার জন্য এই বৈশিষ্ট্যগুলি ডিফল্টরূপে সক্ষম করা আছে।
প্রিমো

3
@ প্রিমো: আপনি বিদ্যমান উত্তরটির সাথে একমত না হলে দয়া করে মেটা থ্রেডের নিজস্ব উত্তর পোস্ট করুন। এ পর্যন্ত যে সাড়ে তিন বছরে কেউ তা করেনি তা হ'ল কমপক্ষে এখানকার নিয়মিত যারা সক্রিয়ভাবে মেটা পরিদর্শন করেছেন তাদের মধ্যে amongকমত্যের একটি যুক্তিসঙ্গত মাত্রার পরামর্শ দেয় তবে alwaysকমত্য সর্বদা পরিবর্তিত হতে পারে। (যাইহোক, আমি এটি যেভাবে দেখছি, যদি ruby golfscript.rb foo.gsগল্ফস্ক্রিপ্টে লিখিত কোনও প্রোগ্রাম পরিচালনার জন্য যদি একটি বৈধ কমান্ড perl -M5.010 foo.plহিসাবে গণনা করা হয় , তবে "পার্ল ৫.১০" তে লিখিত একটি প্রোগ্রাম চালানোর জন্য একটি বৈধ কমান্ড হিসাবে গণ্য করা উচিত But তবে এই জাতীয় যুক্তিগুলি সত্যই মেটাতে সম্পর্কিত, না এখানে।)
ইলমারি করোনেন

5

পাইথন 3 - 124 বাইট - 7 স্পেস


কোড:

from curses import*
s=initscr();noecho()
for x in open(__file__).read().split(" "):s.getch();s.addstr(x+" ")
echo();endwin()

Ungolfed:

from curses import*
# init curses
screen=initscr()
noecho()
# split code into spaces
code = open(__file__).read().split(" ")
for x in code:
    # wait for keypress
    screen.getch()
    # print a bit
    screen.addstr(x+" ")
# deactivate curses
echo()
endwin()

স্টাইলযুক্ত সংস্করণ:

from curses import*
s=initscr();noecho();start_color();init_pair(2,COLOR_GREEN,COLOR_BLACK)
for x in open(__file__).read().split(" "):s.getch();s.addstr(x+" ",color_pair(2))
echo();endwin()

4

রুবি, 85 , 71

require"io/console";f=File.open __FILE__;loop{STDIN.raw &:getc;print f.read(3)||exit}

খুব খারাপ যে IO#rawস্ট্যান্ডার্ড লাইব্রেরির অংশ নয়।

উন্নতি

require"io/console";24.times{|q|STDIN.raw &:getc;$><<IO.read($0,3,q*3)}

এটি কার্নেল # প্রস্থান করার কলটি সরিয়ে দেয় এবং কোডটি সংক্ষিপ্ত করতে গ্লোবাল ভেরিয়েবল ব্যবহার করে।


4

বেফুঞ্জ - 21

~ $ g , 1 +:54*`#@_:0

আমি এটি থেকে মোটামুটি সন্তুষ্ট, যেমন আমি বেফুঞ্জ সম্পর্কে সন্ধান করেছি। যদি আপনি কোনও পপআপ উইন্ডোতে "টাইপ" করতে আপত্তি করেন না তবে আপনি আরও ভাল অনলাইন অনুবাদক না পাওয়া পর্যন্ত আপনি এটিকে এখানে বা এখানে চালাতে পারেন ।


2

পাওয়ারশেল, 89

(gc $MyInvocation.MyCommand.Path).split(" ")|%{$l+="$_ ";write-host "$l";read-host ;cls}

2

পাইথন 3 - 299

a="""from curses import*
s=initscr()
raw()
noecho()
for x in e:
 s.getch()
 s.addstr(x+' ')
nocbreak()
echo()
endwin()
""";b="""e=(a+'a=#%s#;b=#%s#;%s'%(a,b,b.replace('#','""''"',4))+'exec(a)').split(' ')
""";e=('a="""%s""";b="""%s""";%s'%(a,b,b.replace('#','""''"',4))+'exec(a)').split(' ')
exec(a)

এটি একটি কোয়াইন। execপ্রায় 507 থেকে কিছু বিবৃতি ব্যবহার করে এবং সরানোর মাধ্যমে সংক্ষিপ্ত করা হয়েছে ।


2

সি, 211 186 বাইট

অভিশাপ পাঠাগার ব্যবহার করে সিতে আমার সমাধান। এটি অন্যান্য সি সমাধানের চেয়ে দীর্ঘ হতে পারে, তবে এটি একটি কোয়াইন। যদিও প্রশ্নের দ্বারা প্রয়োজনীয় নয়, এটি এখনও বেশ সুন্দর। এটি বেশ সুন্দরভাবে কাজ করে:

#define R(x)#x
#define T(x)R(x)
#define S(p)char*s="#define R(x)#x\n#define T(x)R(x)\n#define S(p)"p"\nS(T(S(p)))";main(){initscr();noecho();while(*s)if(~getch())addch(*s++);}
S(T(S(p)))

কিছু মন্তব্য এবং স্টাফ সহ আরও পঠনযোগ্য সংস্করণ:

#define R(x)#x /* macros to convert the source code in S into a C-string */
#define T(x)R(x)
#define S(p) char*s="#define R(x)#x\n" \
                    "#define T(x)R(x)\n" \
                    "#define S(p) " p "\n" \
                    "S(T(S(p)))";\
    main(){\
        initscr();\
        noecho(); /* don't echo input */ \
        while(*s)\
            if(~getch()) /*true if character has been typed */ \
                addch(*s++);\
}
S(T(S(p)))

সংকলন:

gcc -o h h.c -lncurses

2

সি - 136 135 132 বাইট (শুধুমাত্র উইন্ডোজ)

*fopen();**v;b[ 1<<20];main(p,q){v=q; strcpy(b,*v);strcat(b,".c") ;for(*v=fopen(b,"r");~fscanf(*v,"%s",b);printf("%s ",b))getch();} 

দ্রষ্টব্য: প্রোগ্রামের শেষে একটি স্থান রয়েছে যা সম্ভবত প্রদর্শিত হবে না।

আমি এই গ্যারান্টি দিতে পারি না যে এই প্রোগ্রামটি আমার নিজের ছাড়া অন্য কোনও কম্পিউটারে কাজ করবে কারণ এটি দুর্দান্তভাবে হ্যাক। প্রত্যেকের কাছে কেবল 32-বিট মেশিন থাকাকালীন বিষয়গুলি অনেক সহজ হয়ে যেত। তারপরে আমার sizeof(int*)বয়স 8 হওয়ার বিষয়ে চিন্তা করার দরকার নেই (যা এটি অবশ্যই; এটি নিশ্চিত করার জন্য আমি এটি মুদ্রণ করেছি) sizeof(int)4 বছর বয়সে।

সুখের সাথে, এক্সিকিউটেবলের নামটি আরজিভিতে প্রথম স্ট্রিংয়ে সংরক্ষণ করা হয়। তবে কোনও ফাংশনে আর্গুমেন্ট হিসাবে পয়েন্টার স্থাপনের অর্থ হ'ল আমাকে স্পষ্টভাবে ফাংশনে সমস্ত আর্গুমেন্টের ধরণ উল্লেখ করতে হবে - যার অর্থ আমাকে intদু'বার টাইপ করতে হবে - প্রচুর পরিমাণে অক্ষর waste ভাগ্যক্রমে আমি একটি কাজের সন্ধান পেয়েছি। আমার দ্বিতীয় যুক্তিটি ছিল প্রধান, qকেবল অন্য কোন অন্তর্নিহিত হোক। তারপরে কোনও qপ্রকারের ভেরিয়েবলকে int**নির্ধারিত করে কোনওভাবে স্ট্যাক থেকে সমস্ত প্রয়োজনীয় বাইট হস্তান্তরিত করতে সক্ষম হয়।

fopenফাংশনটি ডিক্লেয়ার না করেই রিটার্নের ধরণের বিন্দুকে পয়েন্টার হিসাবে ব্যাখ্যা করার জন্য আমি এ জাতীয় কোনও কৌশল খুঁজে পেতে ব্যর্থ হয়েছিলাম ।

সম্পাদনা: লক্ষ্য করা উচিত ইওএফ পৌঁছানোর পরে আমার ফিরতি -1 হওয়ার ~fscanf(*v,"%s",b)পরিবর্তে ব্যবহার করা উচিত fscanf(*v,"%s",b)>0


এটি আমার জন্য সেগফাল্টস যাতে আমি এটি পরীক্ষা করতে পারি না তবে void **v;প্রোটোটাইপিংয়ের পরিবর্তে আপনার একটি অকার্যকর পয়েন্টার ( ) বাতিল করতে সক্ষম হওয়া উচিত fopen()
কমেন্টার্ন

@ বর্তমান এই পরিবর্তনটি আমাকে ফলাফলটি সঠিকভাবে সংরক্ষণ করতে সহায়তা করে নি fopen। আমি দেখতে পাচ্ছি না কেন ইন্টের জন্য অকার্যকর স্থানে স্থান পরিবর্তন করা উচিত, কারণ সমস্ত পয়েন্টার যেভাবেই একই আকারের।
ফেয়ারসাম

ভাল যুক্তি. যদিও এখনও ছোট অথবা আরো স্থিতিশীল শুধু একটি পয়েন্টার ডিক্লেয়ার - এই আসলে আমার জন্য সঞ্চালিত হয়: b[1<<20];main(int *c,char **v){strcpy(b,*v);strcat(b,".c");c=fopen(b,"r");for(;fscanf(c,"%s",b)>0;printf("%s ",b))getch();}(আমি প্রতিস্থাপন করতে হয়েছে getchar()জন্য getch()যদিও)।
Com

@ আপনার কোডটি এখনও আমার সিস্টেমে ক্র্যাশ করছে, তবে এটি কার্যকর হয়ে কাজ করবে। আমি অনুমান করি এটি যেমনটি বলেছিলাম ঠিক তেমনই - প্রোগ্রামটির প্রতিটি সংস্করণ 1 টি কম্পিউটারে চলবে।
feersum

কেন আপনি কে ও আর প্রোটোটাইপ ব্যবহার করবেন না? যেমন *fopen()পরিবর্তে *fopen(a,b)?
FUZxxl

1

পার্ল - 87 বাইট

#!/usr/bin/perl -040
use Term::ReadKey;open F,$0;ReadMode 3;print''.<F>while ReadKey 0

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


1

লাইভস্ক্রিপ্ট সহ নোড.জেএস:

#!/usr/local/bin/lsc
console.log <| require \fs .readFileSync __filename, encoding: \utf8

অ্যাসিনক্রোনাস সংস্করণ:

#!/usr/local/bin/lsc
require \fs .readFile __filename, encoding: \utf8, -> console.log &1

1

কোবরা - 147

class P
    def main
        while 1,for a in File.readLines(CobraCore.exePath[:-4]+'.cobra'),print if('[Console.readKey]'and (Console.cursorLeft=0)<1,a,'')*

CobraCore.exePath তাই দরকারী!


1

জাভাস্ক্রিপ্ট ES6, 154

ফায়ারফক্স 154 :

(a= (i=1,b="(a= "+a+")()",s="") => {window.onkeydown=()=>{clear();i=b.indexOf(" ",i+1),d=b.slice(0,i<0?b.length:i);console.log(s+d);if(i<0){i=0,s+=d}}})()

ক্রোম 175 :

( a= function (i,s){b="( a= "+a+")()";c=console,window.onkeydown=function(){c.clear();s=s||"",i=b.indexOf(" ",i+1),d=b.slice(0,i<0?b.length:i);c.log(s+d);if(i<0){i=0,s+=d}}})()

উভয় 274 :

( a= function (i,s){b="( a= "+a+")()";c=console,window.onkeydown=function(){(clear)?clear():c.clear?c.clear():0;s=s||"",i=b.indexOf(" ",i+1),d=b.slice(0,i<0?b.length:i);c.log(s+d);if(i<0){i=0,s+=d}}})()

অবহেলিত (ক্রোম):

( a= function (i,s){        // starting index | undefined, output string
    b="( a= "+a+")()";      // get a string representation of the function
    c=console,
    window.onkeydown=function(){    // on each key down event
        c.clear();                  // clear the output 
        s=s||"";
        i=b.indexOf(" ",i+1);       // get the index of next space
        d=b.slice(0,i<0?b.length:i);// get the string part wanted
        c.log(s+d);                 // print the string
        if(i<0){
            i=0,                    // reset counters
            s+=d                    // adding the string to the main output
        }
    }
})()

দুটি সংস্করণ রয়েছে, কারণ ক্রোম তীর ফাংশনটি পরিচালনা করে না এবং একই পদ্ধতিতে কনসোল সাফ করা হয়নি

ফায়ারফক্স ফায়ারবগের সাথে এক কাজ করে, মনে হয় ডিফল্ট বিকাশকারী কনসোলটি কোনও স্ক্রিপ্ট থেকে সাফ করা যায় না।


আউটপুট মুদ্রণের জন্য ব্যবহারকারীকে এলোমেলো কী টিপতে হবে এমন প্রয়োজনীয়তাটি কি আপনি মিস করেছেন?
অপ্টিমাইজার 17

নিশ্চিত!, এটি আবার লিখতে হবে।
হাক্কেতো

0

গ্রোভি - 379

import java.nio.file.*
Path p = Paths.get(System.getProperty("user.dir"))
DirectoryStream<Path> f = Files.newDirectoryStream(p,"*.groovy")
try{for(e in f){read(e.toAbsolutePath().toString())}}
catch(Exception e){ }
finally{f.close()}

void read(String x){
    def s = new File(x).text
    for(e in s.replace("%n"," %n").split(" ")) 
        print e + " " 
    Thread.sleep(200)
}   

যেহেতু getch()জাভা এবং জাভা-এস্কু ভাষায় গ্রোভির মতো কোনও বা সমমান নেই ... মূলত আমার কোডটি কী-চাপগুলি পরিচালনা করে না। সবই: ডি


0

সি, 248 টি অক্ষর

সত্য কুইন

শুধুমাত্র ইউনিক্সে কাজ করে, উইন্ডোগুলিতে এটি _getch ব্যবহার করে প্রয়োগ করা হবে।

main(){char *p="main(){char *p=\"%s\",s[400];sprintf(s,p,p);system(\"stty raw\");for(p=s;*p!=0;putchar(*p++))getchar();system(\"stty cooked\");}",s[400];sprintf(s,p,p);system("stty raw");for(p=s;*p!=0;putchar(*p++))getchar();system("stty cooked");}

0

এইচটিএমএল এবং জাভাস্ক্রিপ্ট, 232 বাইট

<body><script>var n=0;var f=function (){document.onkeypress=function(){document.body.innerHTML+=("&lt;body>&lt;script>var n=0;var f="+f.toString()+"f()&lt;/script>&lt;/body>").split(" ")[n]+" ";n++;}};f()</script></body>

Jতিহ্যবাহী জাভাস্ক্রিপ্ট কুইন, তবে পরিবর্তিত।

জেএসফিডাল এখানে


0

SmileBASIC, 79 75 বাইট

LOAD"PRG1:"+PRGNAME$()
PRGEDIT 1
@L
IF BUTTON(2)THEN?PRGGET$();
WAIT
GOTO@L

স্মাইলব্যাসিকের একটি প্রোগ্রামের নির্দিষ্ট লাইন পাওয়া খুব সহজ, তাই আমি প্রতিটি লাইন বিরতির আগে স্পেস রেখেছি। আমি ভেবেছিলাম যে আমি খুব চালাক, প্রতিটি লাইন ব্রেকের আগে স্পেস রেখেছি, তবে দৃশ্যত আমাদের স্পেসগুলির পরিবর্তে লাইন ব্রেক ব্যবহার করার অনুমতি দেওয়া হয়েছে ...

ব্যাখ্যা:

LOAD "PRG1:"+PRGNAME$() 'load the code into slot 1 so we can easily read 1 line at a time
PRGEDIT 1 'Edit slot 1
@LOOP
IF BUTTON(2) THEN 'When a button is pressed...
                   PRINT PRGGET$(); 'get a line of code and print it
WAIT 'delay so we don't detect the same press multiple times in a single frame.
GOTO @LOOP 

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