আপনি 4k ডেটা ইউআরআইতে কী করতে পারেন? [বন্ধ]


44

অনুগ্রহ শেষ, কনফের গেম অফ লাইফের সাথে ফিলফডিপলভোয়ার জিতল

ওয়েব প্ল্যাটফর্ম আজ দ্রুত হারে এগিয়ে চলেছে। মতো বৈশিষ্ট্য সিএসএস 3 অ্যানিমেশন , বদলে দেয় , ড্রপ ছায়া এবং গ্রেডিয়েন্ট , <canvas>, <audio>এবং <video>ট্যাগ, করা SVG , WebGL এর এবং আরও অনেক কিছু মানে আপনি ব্রাউজারে অনেক বেশী করতে পারেন, এবং অনেক কম কোডে, আগের তুলনায়। অবশ্যই, অনেক বিকাশকারী সেই নতুন বৈশিষ্ট্যগুলি ব্যবহার করতে পাবে না, কারণ তারা যে সাইটগুলি এবং অ্যাপ্লিকেশনগুলিতে কাজ করে তাদের আইআই 6 এর মতো প্রাচীন, মথ-খাওয়া ব্রাউজারগুলির সাথে পিছনের দিকে সামঞ্জস্য করা দরকার।

সুতরাং, আপনি যদি জোতাটি বন্ধ করেন তবে কী হবে? আপনার পছন্দসই যে কোনও এবং সমস্ত নতুন বৈশিষ্ট্য ব্যবহার করার অনুমতি দেবেন? একটু বাঁচুন, পাগল হয়ে উঠুন, অদ্ভুত রক্তপাতের প্রান্ত বৈশিষ্ট্যগুলি ব্যবহার করুন যা আপনার ব্যবহারকারীদের মধ্যে কেবল 1% সুবিধা নিতে পারবেন?

অবশ্যই সীমাহীন সংস্থান এবং কোনও সার্ভারের সাথে কথা বলার দক্ষতার সাথে আপনি সমস্ত ধরণের জিনিস code কোড এবং লাইব্রেরি এবং ভিডিওগুলি মেগাবাইট লোড করতে পারেন so তবে বাধা ছাড়াই চ্যালেঞ্জগুলি খুব আকর্ষণীয় নয়। এই প্রতিযোগিতার প্রধান সীমাবদ্ধতা হ'ল: আপনি একটি একক, স্বনির্ভর 4k ইউআরআইতে কী করতে পারেনdata:? স্ব-অন্তর্ভুক্ত অর্থ এটি কোনও বাহ্যিক সংস্থানকে বোঝায় না, ওয়েবসকেটস বা এক্সএইচআর ব্যবহার করে যে কোনও সার্ভারের সাথে সংযুক্ত হতে হবে বা বাছাইয়ের কিছু নয়। আপনি যদি পিএনজি বা এমপি 3 এর মতো সংস্থানগুলি এম্বেড করতে চান তবে আপনার ডেটা ইউআরআই-এর মধ্যে ডেটা ইউআরআই অন্তর্ভুক্ত করতে নির্দ্বিধায় বা সাব-রিসোর্স এম্বেড করার জন্য আরও কিছু চৌকস উপায় নিয়ে আসতে পারেন। 4 কে মানে 4096 বাইট, যথাযথভাবে ইউআরআই-এনকোডড, এএসসিআইআই পাঠ্য (ইউআরআই এনকোডিং এড়ানোর জন্য আপনি যদি বেস 64 এনকোডড ডেটা ইউআরআই ব্যবহার করতে পারেন তবে সাধারণত ইউআরআই এনকোডযুক্ত পাঠ্যটি সরল পাঠ্যের জন্য বেস 64 এর চেয়ে ছোট হবে)।

অনুপ্রেরণা সরবরাহ করার জন্য, প্রতিযোগিতার থিমটি স্ট্যাকওভারফ্লো মেমস । একটি ইউনিকর্ন-জুস্টিং গেম, একটি জোন স্কিট ফ্যাক্ট জেনারেটর, একটি ফ্রিহ্যান্ড-সার্কেল ভিত্তিক অঙ্কন প্রোগ্রাম, বা জনপ্রিয় স্ট্যাকওভারফ্লো এবং মেটা.সো মেমসগুলির সাথে কিছু করার জন্য তৈরি করুন।

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

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

এখানে প্রতিযোগিতা যোগ করার জন্য, সোমবার, মার্চ 21, আমি এই প্রশ্নের উপর একটি অনুদান খুলব। যখন আমার কেবল 101 টি প্রতিনিধি থাকবে তখন আমি কীভাবে অনুগ্রহ অর্জন করতে পারি? ভাল, এখন থেকে সোমবারের মধ্যে এই প্রশ্নে আমি যে সমস্ত প্রতিপত্তি অর্জন করেছি তা অনুগ্রহে চলে যাবে (একক অনুগ্রহের জন্য অনুমোদিত 500 এর সীমা পর্যন্ত; তবে এই সীমাটি চাপানো আমার পক্ষে খুব কঠিন হবে, যদিও, রেপটি দেওয়া হলে টুপি)। এর পরে 6 দিনের জন্য প্রবেশিকা গ্রহণ করা হবে; অনুগ্রহের মেয়াদ শেষ হওয়ার কমপক্ষে ২৪ ঘন্টা আগে সমস্ত এন্ট্রি থাকতে হবে, আমাকে সমস্তটি পরীক্ষা করে দেখার জন্য এবং তাদের মূল্যায়ন করার জন্য আমাকে সময় দেওয়ার জন্য। এই মুহুর্তে, আমি সর্বাধিক ভোট দেওয়া উত্তর গ্রহণ করব এবং আমার প্রিয় উত্তরের (যা সর্বোচ্চ ভোটের মতো হতে পারে বা নাও হতে পারে) অনুগ্রহ জানাব। অনুগ্রহ প্রদানের জন্য আমার মাপদণ্ডের মধ্যে রয়েছে সৌন্দর্য, মজা, চতুর কৌশল, নতুন বৈশিষ্ট্যগুলির আকর্ষণীয় ব্যবহার, আন্তঃসংযোগ এবং আকার size

আপনাকে শুরু করার জন্য এখানে কিছু অনুপ্রেরণার উত্স রয়েছে:

  • ক্রোম এক্সপেরিমেন্টস , আধুনিক ওয়েব প্ল্যাটফর্মের প্রদর্শনের সংগ্রহ
  • মজিলা হ্যাকস , ফায়ারফক্স 4-এ নতুন বৈশিষ্ট্যের অনেকগুলি ডেমো সহ আধুনিক ওয়েব প্ল্যাটফর্ম সম্পর্কে একটি ব্লগ
  • জেএস 1 কে , 1 কে জাভাস্ক্রিপ্ট ডেমোসের প্রতিযোগিতা
  • 10 কে অ্যাওয়ার্ড, 10 কে প্রতিযোগিতায় একটি ওয়েবঅ্যাপ
  • gl64k , বর্তমানে 64 কে ওয়েবজিএল ডেমোসের জন্য চলছে একটি ডেমো প্রতিযোগিতা
  • শ্যাডার টয় , আপনি ওয়েবজিএল শেডারগুলির সাথে কী করতে পারেন তার একটি গণের সেট

এন্ট্রিগুলির জন্য ফর্ম্যাট:

প্রবেশের নাম

ডেটা: পাঠ্য / HTML, তোমার% 20data% 20URI

ফায়ারফক্স 4 আরসি, ক্রোম 10 এবং অপেরা 11 এ কাজ করে

আপনার প্রবেশের বিবরণ; এটি কী করে, কেন এটি ঝরঝরে, আপনি কী চালাক কৌশল ব্যবহার করেছেন।

<script>
  // code in expanded form to more easily see how it works
</script>

অনুপ্রেরণার জন্য কোনও ক্রেডিট, আপনার কাছ থেকে ধার নেওয়া কোনও কোড ইত্যাদি

(স্ট্যাক এক্সচেঞ্জ লিঙ্কগুলিতে ডেটা ইউআরআই গ্রহণ করবে না বলে মনে হয়, সুতরাং আপনাকে এটি সরাসরি কোনও <pre>ট্যাগে এম্বেড করা দরকার )


@ জোয়ি আমি পরিচিত না হওয়ার জন্য রেফারেন্সের জন্য এসও মেমসের থ্রেডের সাথে লিঙ্ক করেছি । আপনাকে শুরু করার জন্য আরও কয়েকটি জনপ্রিয় এটি এখানে রয়েছে: ইউনিকর্নস, ওয়েফলস, ফ্রিহ্যান্ড সার্কেল (যা এমএস পেইন্টে ফ্রিহ্যান্ড আঁকা চেনাশোনা বা অন্যান্য চিত্রগুলি বা অনুরূপ অ্যাপ্লিকেশন যা সাধারণত কোনও ধরণের ব্যবহারকারী ইন্টারফেস বাগের জন্য আলোকপাত করার জন্য ব্যবহৃত হয়), জোন স্কিট এবং চক নরিস-স্টাইল তাকে সম্পর্কে "তথ্য"
ব্রায়ান ক্যাম্পবেল

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

আমি একটি ধারণা পেয়েছি, তবে আমি মনে করি এটি বাস্তবায়নে 6 থেকে 8 সপ্তাহ সময় লাগবে, আপনি কি সময়সীমাটি আরও বাড়িয়ে দিতে পারবেন?
এআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ।

@e ব্যবসায়ী হা হা! না, স্ট্যাক ওভারফ্লো থেকে পৃথক, এখানে আসলে সময়সীমা রয়েছে।
ব্রায়ান ক্যাম্পবেল

আরও এন্ট্রি দয়া করে?
মরিস

উত্তর:


33

SO মেম: সব কিছু মেম

সব কিছু মেম। যথেষ্ট বলেছ.

কনওয়ের গেম অফ লাইফ, HTML5 + CSS3 + জেএস,

3,543 3,561 3,555 বাইট

data:text/html,<!DOCTYPE%20html>%0A<html><head><title>Conway's%20Game%20of%20Life%20by%20Sam-Mauris%20Yong</title><style>body{margin:20px;padding:0;font:12px/1.6%20tahoma,sen-serif;}.clr{clear:both}#ftr{padding:10px;border-top:1px%20solid%20#DDD;margin-top:10px}input[type="submit"],input[type="button"],a.btn,a.btn:visited{color:#999;-moz-border-radius:5px;-webkit-border-radius:5px;border:1px%20solid%20#EEE;color:#333;cursor:pointer;padding:4px%208px;text-decoration:none;border:1px%20solid%20#EEE;background-color:#DDD}input[type="submit"]:hover,input[type="button"]:hover,a.btn:hover{background-color:#666;border:1px%20solid%20#EEE;color:#EEE;text-shadow:#000%201px%201px%200}a.btn.%20a.btn:visited{padding:5px%208px}input[type="submit"]:focus,input[type="button"]:focus,a.btn:focus{outline:none;border:1px%20solid%20#099}</style></head><body><h1>Conway's%20Game%20of%20Life</h1><canvas%20id="c"%20width="800"%20height="600"></canvas><div%20class="clr"></div><div%20style="margin-top:5px;"><input%20type="button"%20value="Start"%20id="ctrlStart"><input%20type="button"%20value="Stop"%20id="ctrlStop"><input%20type="button"%20value="Next"%20id="ctrlNext"></div><div%20id="ftr"><i>App%20requires%20awesome%20browsers%20supporting%20HTML5.</i><br>Written%20by%20@<a%20href="http://twitter.com/thephpdeveloper">thephpdeveloper</a>%20aka%20Sam-Mauris%20Yong.</div><script>eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return%20r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new%20RegExp('\\b'+e(c)+'\\b','g'),k[c]);return%20p}('7%20$(b){j%20Q.R(b)}7%20p(b){j%20S(b)}5%20k=$("c");5%20a=k.T("U");5%209={x:V,y:W};5%20s=10;5%206=t%20B(9.x);5%20X=Y;5%20i=-1;l(i++<6.h-1){6[i]=t%20B(9.y)}7%20C(b,c){a.D="Z";a.E(b*s,c*s,s,s);a.F="11";a.G(b*s,c*s,s,s)}7%20u(b){5%20c=t%2012();4(g(b)=="H"){4(g(b.h)!="I"){5%20c=[]}13(5%20d%2014%20b){4(g(b[d])=="H"){c[d]=u(b[d])}v{4(g(b[d])=="15"){c[d]=b[d]}v{4(g(b[d])=="16"){c[d]=b[d]}v{4(g(b[d])=="17"){((b[d]==m)?c[d]=m:c[d]=n)}}}}}}j%20c}7%208(b){j%20g(b)=="I"||!b?n:m}7%20J(b,d){5%20c=0;4(b>0){4(8(6[b-1][d])){c++}4(d>0){4(8(6[b-1][d-1])){c++}}4(d<9.y-1){4(8(6[b-1][d+1])){c++}}}4(b<9.x-1){4(8(6[b+1][d])){c++}4(d>0){4(8(6[b+1][d-1])){c++}}4(d<9.y-1){4(8(6[b+1][d+1])){c++}}}4(d>0){4(8(6[b][d-1])){c++}}4(d<9.y-1){4(8(6[b][d+1])){c++}}j%20c}7%20K(){5%20d=u(6);5%20c=0;l(c<6.h){5%20f=0;l(f<6[c].h){5%20b=6[c][f];5%20e=J(c,f);4(e<2||e>3){d[c][f]=n}4(e==3){d[c][f]=m}f++}c++}6=d}7%20o(){a.D="#18";a.E(0,0,p(k.19),p(k.1a));5%20b=0;l(b<6.h){5%20c=0;l(c<6[b].h){a.F="#1b";a.G(b*s,c*s,s,s);4(6[b][c]){C(b,c)}c++}b++}}5%20q;7%20w(){K();o()}7%20L(){q=M.1c(w,1d)}7%20N(){q=M.1e(q)}7%20z(c){4(r){5%20b=O.P((c.1f-p(k.1g))/s);5%20d=O.P((c.1h-p(k.1i))/s);6[b][d]=!6[b][d];o()}}5%20r=n;o();k.1j=7(b){r=m};k.1k=7(b){z(b)};k.1l=7(b){z(b);r=n};$("1m").A=N;$("1n").A=w;$("1o").A=L;',62,87,'||||if|var|space|function|evalbool|max|||||||typeof|length||return||while|true|false|draw||time_var|dodrawing||new|deepObjCopy|else|next|||editorDraw|onclick|Array|drawCell|fillStyle|fillRect|strokeStyle|strokeRect|object|undefined|countAliveNeighbours|update|start|window|stop|Math|floor|document|getElementById|parseInt|getContext|2d|80|60|lastSpace|null|black||white|Object|for|in|string|number|boolean|fff|width|height|ccc|setInterval|250|clearInterval|pageX|offsetLeft|pageY|offsetTop|onmousedown|onmousemove|onmouseup|ctrlStop|ctrlNext|ctrlStart'.split('|'),0,{}))</script></body></html>

এটি কনভয়ের গেম অফ লাইফটি নিজেকে ক্যানভাস এবং সিএসএস 3 দিয়ে এইচটিএমএল 5 এর জন্য লিখেছেন। আমি এটি 10 ​​কে অ্যাপার্টমেন্টের প্রতিযোগিতার সময় মজা করার জন্য লিখেছিলাম তবে আমি এটি প্রতিযোগিতার জন্য জমা দিই নি।

বেস64 এনকোডড সংস্করণটি 4.61KB এর বেশি ডেটা বিস্তৃত হয়েছে, যেখানে মূল সংস্করণটি 43 3543 বাইট।

আকারটি সংকুচিত করতে : জাওয়াস্ক্রিপ্ট কোডটি ইউইউআই অনলাইন সংক্ষেপক দ্বারা, তারপরে ডিন এডওয়ার্ডসের প্যাকার দ্বারা মিনিমাইফ করা হয়েছে । সিএসএস কোড YUI অনলাইন সংক্ষেপক দ্বারা minified । গুগল এপিআই লাইব্রেরি থেকে jQuery লাইব্রেরি ব্যবহার করে। বৈধ এইচটিএমএল 5 এবং সিএসএস 3 (ডাব্লু 3 বৈধকারীর পরীক্ষামূলক সংস্করণ)।

খেলতে:

  • ব্ল্যাক বক্স একটি লাইভ সেলকে উপস্থাপন করে, সাদা মৃত কোষকে উপস্থাপন করে।
  • লাইভ সেলটি চিহ্নিত করতে একটি বাক্সে ক্লিক করুন, এটিকে মৃত হিসাবে চিহ্নিত করতে আবার ক্লিক করুন।
  • <Start>সিমুলেশন চালাতে, <Stop>বিরতি <Next>দিতে এবং পরবর্তী পদক্ষেপটি প্রদর্শন করতে টিপুন
  • ইন্টারনেট এক্সপ্লোরার 9, ফায়ারফক্স 4 (এবং পাশাপাশি ফায়ারফক্স 3), সাফারি 5 এবং গুগল ক্রোমে দুর্দান্ত চলছে।

মানব-পঠনযোগ্য (রোবটগুলি মারা যাবে) সংস্করণ:

<!DOCTYPE html>
<html>
    <head>
        <title>Conway's Game of Life by Sam-Mauris Yong</title>
        <style>
            body{
                margin:20px;
                padding:0;
                font:12px/1.6 tahoma,sen-serif;
            }
            .clr{
                clear:both
            }
            #ftr{
                padding:10px;
                border-top:1px solid #DDD;
                margin-top:10px
            }
            input[type="submit"],input[type="button"],a.btn,a.btn:visited{
                color:#999;
                -moz-border-radius:5px;
                -webkit-border-radius:5px;
                border:1px solid #EEE;
                color:#333;
                cursor:pointer;
                padding:4px 8px;
                text-decoration:none;
                border:1px solid #EEE;
                background-color:#DDD
            }            
            input[type="submit"]:hover,input[type="button"]:hover,a.btn:hover{
                background-color:#666;
                border:1px solid #EEE;
                color:#EEE;
                text-shadow:#000 1px 1px 0
            }
            a.btn,a.btn:visited{
                padding:5px 8px
            }
            input[type="submit"]:focus,input[type="button"]:focus,a.btn:focus{
                outline:none;
                border:1px solid #099
            }
        </style>
    </head>
    <body>
        <h1>Conway's Game of Life</h1>
    <canvas id="c" width="800" height="600"></canvas>
    <div class="clr"></div><div style="margin-top:5px;">
        <input type="button" value="Start" id="ctrlStart">
        <input type="button" value="Stop" id="ctrlStop">
        <input type="button" value="Next" id="ctrlNext">
    </div>
    <div id="ftr">
        <i>App requires awesome browsers supporting HTML5.</i>
        <br>
        Written by @<a href="http://twitter.com/thephpdeveloper">thephpdeveloper</a> aka Sam-Mauris Yong.
    </div>
    <script>
        function $(i){
            return document.getElementById(i);
        }
        function p(v){
            return parseInt(v);
        }
        var k = $("c");
        var a = k.getContext('2d');

        var max = {
            x: 80,
            y: 60
        };

        var s = 10;
        var space = new Array(max.x);
        var lastSpace = null;
        var i = -1;
        while(i++ < space.length - 1){
            space[i]= new Array(max.y);
        }

        function drawCell(x,y){
            a.fillStyle = "black";
            a.fillRect(x * s, y * s, s, s);
            a.strokeStyle = "white";
            a.strokeRect(x * s, y * s, s, s);
        }

        function deepObjCopy (dupeObj) {
            var retObj = new Object();
            if (typeof(dupeObj) == 'object') {
                if (typeof(dupeObj.length) != 'undefined')
                    var retObj = [];
                for (var objInd in dupeObj) {
                    if (typeof(dupeObj[objInd]) == 'object') {
                        retObj[objInd] = deepObjCopy(dupeObj[objInd]);
                    } else if (typeof(dupeObj[objInd]) == 'string') {
                        retObj[objInd] = dupeObj[objInd];
                    } else if (typeof(dupeObj[objInd]) == 'number') {
                        retObj[objInd] = dupeObj[objInd];
                    } else if (typeof(dupeObj[objInd]) == 'boolean') {
                        ((dupeObj[objInd] == true) ? retObj[objInd] = true : retObj[objInd] = false);
                    }
                }
            }
            return retObj;
        }

        function evalbool(v){
            return typeof(v) == 'undefined' || !v ? false : true;
        }

        function countAliveNeighbours(x,y){
            var l = 0;
            // left side
            if(x > 0){
                if(evalbool(space[x-1][y])){
                    l++;
                }
                if(y > 0){
                    if(evalbool(space[x-1][y-1])){
                        l++;
                    }
                }
                if(y < max.y-1){
                    if(evalbool(space[x-1][y+1])){
                        l++;
                    }
                }
            } // left side

            // right side
            if(x < max.x - 1){
                if(evalbool(space[x+1][y])){
                    l++;
                }
                if(y > 0){
                    if(evalbool(space[x+1][y-1])){
                        l++;
                    }
                }
                if(y < max.y-1){
                    if(evalbool(space[x+1][y+1])){
                        l++;
                    }
                }
            }
            // right side

            if(y > 0){
                if(evalbool(space[x][y-1])){
                    l++;
                }
            }

            if(y < max.y-1){
                if(evalbool(space[x][y+1])){
                    l++;
                }
            }

            return l;
        }

        function update(){
            var t = deepObjCopy(space);
            var x = 0;
            while(x < space.length){
                var y = 0;
                while(y < space[x].length){
                    var cell = space[x][y];
                    var nalive = countAliveNeighbours(x,y)

                    if(nalive < 2 || nalive > 3){
                        t[x][y] = false;
                    }
                    if(nalive==3){
                        t[x][y] = true;
                    }

                    y++;
                }
                x++;
            }
            space = t;
        }

        function draw(){
            a.fillStyle = "#fff";
            a.fillRect(0, 0, p(k.width), p(k.height));
            var x = 0;
            while(x < space.length){
                var y = 0;
                while(y < space[x].length){
                    a.strokeStyle = "#ccc";
                    a.strokeRect(x*s, y*s, s,s);
                    if(space[x][y]){
                        drawCell(x, y);
                    }
                    y++;
                }
                x++;
            }
        }

        var time_var;

        function next(){
            update();
            draw();
        }

        function start(){
            time_var = window.setInterval(
            next, 250);
        }

        function stop(){
            time_var = window.clearInterval(time_var);
        }
        function editorDraw(e){
            if(dodrawing){
                var x = Math.floor((e.pageX-p(k.offsetLeft))/s);
                var y = Math.floor((e.pageY-p(k.offsetTop))/s);
                space[x][y] = !space[x][y];
                draw();
            }
        }
        var dodrawing = false;

        draw();
        k.onmousedown = function(e){
            dodrawing=true;
        }
        k.onmousemove = function(e){
            editorDraw(e);
        }
        k.onmouseup = function(e){
            editorDraw(e);
            dodrawing=false;
        }
        $("ctrlStop").onclick = stop;
        $("ctrlNext").onclick = next;
        $("ctrlStart").onclick = start;
    </script>
</body>
</html>

ইতিহাসের একটি শ্রেণি:

  1. JQuery থেকে নির্ভরতা অপসারণ করার পাশাপাশি সমস্ত স্পেসে ইউআরআই-এনকোডিং সংশোধন করা হয়েছে। বিভিন্ন উপায়ে কোড উন্নত করা হয়েছে (যা আমি মনে করতে পারি না)।
  2. জীবিত প্রতিবেশীদের গণনায় স্থির ত্রুটি এবং আকার হ্রাস করতে কিছু কোড রিফ্যাক্টর।

1
এটি খুব দুর্দান্ত, তবে jQuery গ্রন্থাগারটি কোনও বাহ্যিক নির্ভরতা নয়?
গ্যারেথ

1
হোস্ট করা: ebusiness.hopto.org/gol.htm
aaaaaaaaaaa

3
এখানে অনেক কিছুর জন্য আপনার jQuery প্রয়োজন হয় না; আপনি সম্ভবত আপনার কোডটি খুব বেশি প্রসারিত না করে কাঁচা ডোম অ্যাক্সেসের সাথে এটি প্রতিস্থাপন করতে পারেন, সম্ভবত আইপি কম্প্যাট ব্যয় করে (তবে ক্যানভাসটি পুরানো আইআইয়ের সাথে সামঞ্জস্যপূর্ণ নয়, তাই আপনি বেশি হারাবেন না)। যদি এটি এটি প্রসারিত হয় যাতে আপনার এটি ফিট করার জন্য আরও কিছুটা কমিয়ে ফেলতে হবে, আপনি কিছু বর্ণনামূলক পাঠ্য মুছে ফেলতে পারেন, পাশাপাশি কিছু />সিকোয়েনস যা আপনি প্রতিস্থাপন করতে পারেন >সেহেতু আপনি এক্সএইচটিএমএল লিখছেন না। এছাড়াও, আপনার ফলাফলকে যথাযথভাবে ইউআরআই-এনকোড করতে মনে রাখবেন; ব্রাউজারগুলি ইউআরআইতে ফাঁকা স্থান গ্রহণ করতে পারে, তারা প্রযুক্তিগতভাবে বৈধ নয়।
ব্রায়ান ক্যাম্পবেল

4
স্থান বাঁচাতে আপনি আরও কয়েকটি জিনিস ব্যবহার করতে পারেন, যদি আপনার কিছু প্রয়োজন বয়ে যায়। কোন প্রকৃত প্রয়োজন নেই <html>, <head>এবং <body>ট্যাগ (বা তাদের ক্লোজিং ট্যাগ)। এগুলি এইচটিএমএলে অন্তর্নিহিত, এবং ব্রাউজারের দ্বারা উপযুক্ত স্থানে যুক্ত করা হবে।
ব্রায়ান ক্যাম্পবেল

1
যাইহোক, আপনি যদি কোডটি ছোট করতে চান। আপনি যতবারই এটি পড়েন ততবারই আপনি সীমার বাইরে পড়েন না তা পরীক্ষা করার চেয়ে এটির ডেটার চেয়ে একটু বড় অ্যারে করা প্রায়শই সহজ। এবং আপনি কোনও ক্ষেত্রের চারদিকে রিংয়ের পরিবর্তে 3x3 বর্গ গণনা করতে পারেন, ক্ষতিপূরণের জন্য আপনাকে যা করতে হবে তা হল অ্যালগরিদমকে কিছুটা সামঞ্জস্য করা।
এআআআআআআআআআআআআআআআআআআআআআআ

22

একটি পুরানো থ্রেড খনন করে দুঃখিত, তবে আমি এই চ্যালেঞ্জটি পাশের বারে দেখেছি এবং আমি কেবল প্রতিরোধ করতে পারিনি। আমি কিছু মনে করি না যে চ্যালেঞ্জটি সত্যই শেষ হয়ে গেছে, কিছু নিয়ে আসার মধ্যে মজা ছিল।

আমরা কি অন্য দফায় থাকতে পারে?

যাইহোক, আমার জমা:

সম্পাদন করা

আবার এটি খনন করার জন্য দুঃখিত , তবে যুগ যুগ ধরে এটি আমাকে বিরক্ত করছিল যে আমি 1KB এর নীচে এটি পেতে পারি না। এখন আমি এটা করেছি!

ইন্টারেক্টিভ, শেড কিউব:

960 987 1082 1156 1182 1667 1587 বাইট !, HTML + CSS3 + জেএস

data:text/html,<script>X='position:absolute;',S=Math,l=S.sin,V=S.cos,D='style',$='getElementsByTagName',E=H=G=(L=K=99)/2,q=-G,j=1e4,Y=',';function _(p,r,D){A=[],B=l(r),C=V(r);for(z=6;z--;)v=z*3,A.unshift({x:l(D)*(B*p[v+1]+C*p[v+2])+V(D)*p[v]+K,y:C*p[v+1]-B*p[v+2]+K});return A}function R(a,b,c){F=x[v++],a=N[a],b=N[b],c=N[c];F.setAttribute(D,X+'-webkit-transform:matrix('+(a.x-b.x)/L+Y+(a.y-b.y)/L+Y+(c.x-b.x)/L+Y+(c.y-b.y)/L+Y+b.x+Y+b.y+');opacity:'+(((b.y-a.y)/(b.x-a.x)-(c.y-a.y)/(c.x-a.x)<0)^(a.x<b.x^a.x>c.x)));F[$]('b')[0][D].background='rgb(0,'+(d(a,c)+d(a,b))+',0)';return R}function d(P,O){W=P.x-O.x,Q=P.y-O.y;return S.sqrt(W*W+Q*Q)|0}onload=function(){P=document;for(o=6;o--;)P.body.appendChild(P.createElement('P')).innerHTML='<b '+D+'="'+X+'width:99;height:99"></b>';x=P[$]('p');onmousemove=function(e){J=e.pageX-K;U=e.pageY-K};setInterval(function(){N=_([q,q,q,G,G,q,q,G,q,q,q,G,G,q,G,G,G,G],E+=J/j,H+=U/j);R(2,0,3)(5,1,2)(0,2,1)(4,3,0)(3,4,5)(1,5,4)})}</script>

আপনার মাউস সরান।

ক্রোমে কাজ করে (18. কিছু, তবে বেশিরভাগ সাম্প্রতিক বিষয়গুলিতে কাজ করা উচিত)।

আমি এটি বেশ ভালভাবে গল্ফ করেছি, আমি এমন কৌশলটি ব্যবহার করে কয়েকটি চরিত্র সংরক্ষণ করেছি যা আমি ভেবেছিলাম দুর্দান্ত ছিল: বলুন আপনার নিম্নলিখিতগুলি রয়েছে:

function g(x){alert("hello "+x+"!")}
g("dave");g("martin");g("alice");g("rose");g("bob");g("helen");g("jo");

অক্ষরগুলি নিজের মধ্যে ফাংশনটি ফিরিয়ে দিয়ে এবং নিম্নলিখিতগুলি করে সংরক্ষণ করা যায়:

function g(x){alert("hello "+x+"!");return g}
g("dave")("martin")("alice")("rose")("bob")("helen")("jo");

আপনার কাছে কতটি ফাংশন কল রয়েছে তার উপর সঞ্চয় নির্ভর করে। যদিও এটি গল্ফিংয়ের চেয়ে অবসন্নতার পক্ষে সম্ভবত ভাল।

আমিও প্রতিস্থাপন দ্বারা একটি অক্ষর সংরক্ষিত 1000সঙ্গে 1e4, দান Mathবর্গ, এবং তার ফাংশন, alias লেখা কিছু। পুনরাবৃত্ত স্ট্রিংগুলির জন্য ভেরিয়েবলগুলি ব্যবহার করা (এর মধ্যে কিছু সংরক্ষণের সন্ধান করা বেশ শক্ত)। এছাড়াও, styleআমার কোডটিতে কয়েকবার শব্দটি ছিল ; তাদের মধ্যে কিছু স্ট্রিং ছিল এবং অন্যরা এর মতো সনাক্তকারী ছিল element.style.whatever। একটি ভেরিয়েবল ( D='style) এ স্ট্রিং বরাদ্দ করা আমাকে তার সাথে স্ট্রিংগুলি Dপ্রতিস্থাপন এবং এটির মতো শনাক্তকারীদের প্রতিস্থাপনের অনুমতি দেয় element[D].whatever

সর্বশেষ সম্পাদনা: একটি পুরানো কমপ আনার জন্য দুঃখিত, তবে কীভাবে এটি সংক্ষিপ্ত করবেন কিছু ধারণা আমার কাছে এসেছিল!


সুন্দর, একটি এন্ট্রি তৈরি করার জন্য ধন্যবাদ! এটি বেশ দুর্দান্ত। আমি আপনার গল্ফিং কৌশলগুলিও পছন্দ করি।
ব্রায়ান ক্যাম্পবেল

দুর্দান্ত, তবে আপনার কাছে প্রচুর জায়গা বাকি আছে, আপনার এতে আরও যুক্ত করা উচিত :) একজন রুবিক সিমুলেটর কীভাবে?
aditsu

onmousemoveপরিবর্তিত হতে পারে: onmousemove=function(e){U=K-e.pageX;J=e.pageY-K};। এইভাবে কিউব মাউস পয়েন্টার (আরও স্বজ্ঞাত) এর দিকে রোল করবে।
ভিক্টর

আপনি যদি ECMAScript 6 দিয়ে খুশি হন (এটি কেবল ফায়ারফক্সে (স্পাইডারমনকি) কাজ করে, যতদূর আমি জানি), তবে function g(x){alert("hello "+x+"!");return g} g("dave")("martin")("alice")("rose")("bob")("helen")("jo");হয়ে উঠতে পারেg=x=>alert("hello "+x+"!"),g;g("dave")("martin")("alice")("rose")("bob")("helen")("jo");
টুথব্রাশ

1

জাভাস্ক্রিপ্ট 489 অক্ষর

এটি অনুমান একটি সংখ্যা গেম খেলে।

data:text/html,<!DOCTYPE%20html><html><body><h1>Guess the number between 0 and 100</h1><p id="p">good luck</p><form><input id="i" type="text"></input></form><br><button onclick="h()">Try</button><script>var r=Math.round(100*Math.random());function h(){var a=document.getElementById("i").value;var anum="/(^\d+$)/";var res="is not a number!";if (!isNaN(a)){if(a<r) res="higher";else if(r<a) res="lower";else res="you win";}document.getElementById("p").innerHTML=res;}</script></body></html>

আমি এই কোড দিয়ে এটি কাজ করেছিলাম:

<!DOCTYPE html>
<html>
<head>
</head>
<body onload="g()">
<p id="p"></p>

<script>
f=function(x){
var y=x.replace(" ","%20");
window.location.assign("data:text/html,"+y);
}
g=function(){
var a="<!DOCTYPE html><html><body><h1>Guess the number between 0 and 100</h1><p id=\"p\">good luck</p>"+
"<form><input id=\"i\" type=\"text\"><\/input></form>"
+"<br><button onclick=\"h()\">Try<\/button><script>"
+document.getElementById("s").innerHTML+
"<\/script><\/body><\/html>";
f(a);
}
</script>
<script id="s">
var r=Math.round(100*Math.random());
function h(){
var a=document.getElementById("i").value;
var anum="/(^\d+$)/";
var res="is not a number!";
if (!isNaN(a)){
if(a<r) res="higher";
else if(r<a) res="lower";
else res="you win";
}
document.getElementById("p").innerHTML=res;
}
</script>

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