টুইটগুলিতে বাইনারি টেট্রিস


16

140 বাইটে টেট্রিস প্রয়োগের বিষয়ে প্রোগ্রামিং ওয়েবসাইটগুলিতে সম্প্রতি কিছু বছর আগে (কয়েক বছর আগে) কিছু গুঞ্জন ছিল । ...

দেখা যাচ্ছে যে এটি ছোট হলেও এটি টেট্রিসের একটি সরলিকৃত সংস্করণ, এমনকি একটি সম্পূর্ণ বাস্তবায়নও নয়। জাভাস্ক্রিপ্টের 140 বাইটে কেবল মূল যুক্তির কাজটিই ফিট করে। এটি চালানোর জন্য আপনার আরও ~ 840 টি এইচটিএমএল অক্ষর প্রয়োজন।

আমরা আরও ভাল করতে পারি!
এই চ্যালেঞ্জটি "বাইনারি টেট্রিস" এর একটি সম্পূর্ণ সংস্করণ যথাসম্ভব কম টুইটগুলিতে প্রয়োগ করা।

বাইনারি টেট্রিস বিধি:

  • প্রোগ্রামটিতে কমপক্ষে 5 টি কলাম এবং 6 টি সারি কোষ যুক্ত একটি প্লেয়িং ফিল্ড প্রদর্শিত হবে display
    • ক্ষেত্রের ব্লকগুলি এবং প্রান্তগুলি স্পষ্টভাবে চিহ্নিত হওয়া পর্যন্ত প্রদর্শনের যে কোনও পদ্ধতি ব্যবহার করা যেতে পারে।
  • কমপক্ষে দুই ধরণের ব্লক থাকতে হবে: #এবং #####এল এর মতো আকৃতির অতিরিক্ত ব্লক সমর্থন বা অ্যাঙ্গেল ব্লকগুলি আমার দ্বারা উত্সাহিত হবে: পি এবং বাইনারি টেট্রিসের সবচেয়ে সম্পূর্ণ গেম (মূল এবং ঘূর্ণন বৈশিষ্ট্যগুলির মতো সর্বাধিক ব্লক) আমার সুখ এবং একটি সম্ভাব্য অনুগ্রহ অর্জন করবে 50 টি রেপ।
  • শীর্ষ সারিতে ক্ষেত্রটিতে নতুন ব্লক যুক্ত করা হবে এবং একটি ব্লক সেল অবশ্যই কেন্দ্রের কলামটি দখল করবে।
  • একটি নির্দিষ্ট হারে ব্লকগুলি নীচের সারির দিকে নেমে আসে। ব্যবহারকারীদের ইনপুট ছাড়াই ব্লকগুলি অবতরণ করতে হবে।
  • যখন ব্লকগুলি মাঠের নীচে বা নীচের অংশে স্পর্শ করে, সেগুলি পড়া বন্ধ করে দেয় এবং স্থির হয়ে যায়। একটি নতুন ব্লক যুক্ত করা হয়েছে।
  • সারিটির সমস্ত কলাম যখন ব্লকগুলিতে পূর্ণ হয়, সারিটি খালি হয়ে যায় এবং উপরের সমস্ত নির্দিষ্ট ব্লকগুলি একটি সারি নিচে নামিয়ে দেয়।
  • প্রোগ্রামটি অবশ্যই কিপ্রেসগুলিতে প্রতিক্রিয়া জানাবে। এখানে 3 টি অনন্য কী থাকতে হবে যা নিম্নলিখিত ফাংশনগুলি সম্পাদন করে
    • শিফট বর্তমান ব্লক 1 বাম কলাম বাম
    • বর্তমান ব্লক ডান 1 কলাম শিফট
    • 1 টি সারির নিচে বর্তমান ব্লকটি স্থানান্তর করুন
  • প্রতিটি টুইটের মধ্যে কেবল 140 টি অক্ষর থাকতে পারে। টুইটগুলিতে রাখা যেতে পারে এমন বহু-বাইট অক্ষর ব্যবহারের অনুমতি রয়েছে।
  • একটি টুইট মধ্যে কি হতে পারে তার নিয়মগুলি সহজ। আপনি যদি এটি টুইট করতে পারেন তবে আপনি এটি ব্যবহার করতে পারেন।

  • বর্ণিত ভাষা একই নিয়ম অনুসরণ করে। প্রতিটি বিভাগ অবশ্যই চশমা অনুসরণ করতে হবে। যতক্ষণ কোনও রান টাইম ত্রুটি না ঘটে (এবং বাকিটি স্পেস অনুসরণ করে বৈধ হয়) আপনার উত্তরটি বৈধ গল্ফিং বিধি:
    যেহেতু মূল প্রয়োগটি "টুইটযোগ্য" ছিল, তাই এই চ্যালেঞ্জটি একই প্রয়োজন। এন্ট্রি অবশ্যই টুইটারের একটি সিরিজ (140 টির বেশি অক্ষরের লাইন) হিসাবে প্রেরণ করতে সক্ষম হবে।

  • প্রথম টুইটটিতে সংকলক / দোভাষীর নাম, প্রোগ্রামের নাম এবং কোনও কমান্ড লাইনের যুক্তি থাকতে হবে

    • এটি ফাইল "P0" হিসাবে সংরক্ষণ করা হবে
  • নিম্নলিখিত এন টুইটগুলি লাইন একটি সিরিজ হিসাবে প্রোগ্রাম থাকতে হবে।
    • প্রতিটি টুইট টি <এন> নামের একটি ফাইলে সংরক্ষণ করা হবে, যেখানে এন 1..N আছে
  • প্রতিটি লাইন পূর্ববর্তী লাইনে যুক্ত হবে এবং সংকলিত বা ব্যাখ্যা করা হবে। এটি অবশ্যই একটি বৈধ অবজেক্ট ফাইল বা প্রোগ্রাম উত্পাদন করতে হবে।
  • শেষ লাইনটি যুক্ত না হওয়া পর্যন্ত প্রোগ্রামটি কার্যকর হওয়ার প্রয়োজন নেই।
  • প্রোগ্রামটি নিম্নলিখিত পদ্ধতিতে পরিচালিত হবে (ছদ্ম-বাশ)

    interp,prog,args = split P0 /\s/ 
    touch $prog
    for file in ./T* do
      cat $prog file > $prog
      $interp $prog $args
      die("FAIL") if $? #detect error
    done
    

    দোভাষীকে অবশ্যই একটি সাধারণভাবে উপলব্ধ এক্সিকিউটেবল প্রোগ্রাম হতে হবে যা ইতিমধ্যে টেট্রিস প্রয়োগ করে না।

স্কোরিং :
পি 0 সহ কয়েকটি কম টুইটসমূহ। সর্বাধিক সংখ্যক স্পেয়ার অক্ষর দ্বারা বিভক্ত সম্পর্ক (140 * সংখ্যা টুইটগুলি - মোট অক্ষরের সংখ্যা)।

উদাহরণ এন্ট্রি

chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>

স্কোর = 3 (334 অতিরিক্ত)

cc a.c ;a.out
main(){/*cool prog here*/}

স্কোর = 2 (241 অতিরিক্ত)

tetris

স্কোর = 1 (134 অতিরিক্ত) যদি এটি আইনী ছিল, যা এটি নয়

বিশেষ ধন্যবাদ

আমাকে এখানে অ্যাশিলির সম্মতিতে পোস্ট করার অনুমতি দেওয়া হয়েছিল


টুইটগুলিতে UTF-8 টি অক্ষর থাকতে পারে। এখানেও কি এটি সত্য (উদাহরণস্বরূপ, আমরা সিজেকে চরিত্রগুলি ব্যবহার করে একক টুইটের মাধ্যমে 400ish বাইটগুলি স্টাফ করতে পারি?)
রবার্ট ফ্রেজার

@ রবার্টফ্রেজার যদি আপনি এটি একটি টুইটতে টাইপ করতে পারেন এবং পাঠাতে পারেন তবে হ্যাঁ
ক্রিস্টোফার

একটি টুইটের সাথে মানানসই কিছু যদি গেম হয় তবে আমাদের "টুইটগুলি" এর মধ্যে আমরা কী নতুন লাইনে থাকতে পারি? টুইটের মধ্যে লাইন বিরতি অনুমোদিত allowed
notjagan

@ নোটজাগান হ্যাঁ এটি আপনি এটি করতে পারেন এটি টুইট করতে পারেন
ক্রিস্টোফার

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

উত্তর:


8

পাইথন 3, 5 টি স্কোরের স্কোর (242 অতিরিক্ত, গণনা P0)

টেট্রিস প্রোগ্রামের ডেমো (পোস্ট করা সংস্করণের চেয়ে কিছুটা কম)

-19 বাইট জনাথন অ্যালান ধন্যবাদ !

অতিরিক্ত গণনা টুইটগুলির মধ্যে থেকে নতুন লাইনগুলি গ্রহণ করে না।

টুইট 1 (ঘোষণা, 12 বাইট)

python3 t.py

টুইট ২ (by০ বাইট)

import msvcrt as m,os;f=c=s=0;a=34636833;r=range;p=1<<32;t=30
while 1:

টুইট 3 (129 বাইট)

 if m.kbhit()and b"\xe0"==m.getch():p=[p>>(not(a|f<<1)&p),p,p<<(not(a<<4|f>>1)&p),p>>5-5*(bool(f&p>>5)or p<t)][ord(m.getch())-77]

টুইট 4 (113 বাইট)

 c+=1;print("\n".join("".join(".#"[1&(f|p)>>i*5+j]for j in r(5))for i in r(6))[::-1]);os.system("cls")
 if c%t<1:

টুইট 5 (134 বাইট)

  if f&p>>5or p<t:s=~s;f|=p;p=2-s<<26
  else:p>>=5
 for i in r(0,t,5):
  if f|31<<i==f:b=bin(f)[2:].zfill(t);f=int(b[:-i-5]+b[t-i:],2)

সম্পূর্ণ প্রোগ্রাম (449 বাইট)

import msvcrt as m,os;f=c=s=0;a=34636833;r=range;p=1<<32;t=30
while 1:
 if m.kbhit()and b"\xe0"==m.getch():p=[p>>(not(a|f<<1)&p),p,p<<(not(a<<4|f>>1)&p),p>>5-5*(bool(f&p>>5)or p<t)][ord(m.getch())-77]
 c+=1;print("\n".join("".join(".#"[1&(f|p)>>i*5+j]for j in r(5))for i in r(6))[::-1]);os.system("cls")
 if c%t<1:
  if f&p>>5or p<t:s=~s;f|=p;p=2-s<<26
  else:p>>=5
 for i in r(0,t,5):
  if f|31<<i==f:b=bin(f)[2:].zfill(t);f=int(b[:-i-5]+b[t-i:],2)

কিছু খারাপ বিট পয়েন্ট হ্যাকিং করে এবং ক্ষেত্রটি এবং দুটি পূর্ণসংখ্যায় টুকরা করে। আমি চেষ্টা করব এবং শীঘ্রই একটি ব্যাখ্যা পোস্ট করব।

দ্রষ্টব্য: এটি কেবলমাত্র উইন্ডোজ উপর সঞ্চালিত হয়, কিন্তু এটি মাধ্যমে লিনাক্স পরিবর্তিত হতে পারে msvcrtgetchএবং "cls""clear"। অতিরিক্তভাবে, চরিত্রের ইনপুট পাইথনের আইডিএল-তে কাজ করে না, তাই আমি অন্য কোথাও এটি চালানোর পরামর্শ দিই।


বাহ ভাল হয়েছে! এই সংক্ষিপ্ত
ক্রিস্টোফার

1
ভাল কাজ. \xe0হয় চার বাইট না এক, তাই কিচ্কিচ্ 3 হওয়া উচিত 130. আপনি মিস করেছেন বলে মনে হচ্ছে time.sleep(.1);c+=1কিচ্কিচ্ 4 থেকে শৃঙ্খলা (যদি অর্ডার পরিবর্তন ইচ্ছাকৃত হয় আমি জানি না) পরিবর্তিত করে আবার \nতাই এটি 134 হওয়া উচিত দুই বাইট না, এক ।
জোনাথন অ্যালান

1
... মনে রাখবেন এটি sleepআমার মেশিনে ছাড়া খেলতে পারে বলে মনে হচ্ছে ।
জোনাথন অ্যালান

1
আপনি পরীক্ষা c%10<1এবং অপসারণ করতে পারে c=0
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান পরামর্শের জন্য ধন্যবাদ! এটি পোস্ট করার সময় আমি কিছুটা তাড়াহুড়ো করেছিলাম তাই মনে হয় টুইটগুলি বিভক্ত করার সাথে আমি কিছুটা গাফিল হয়েছি।
notjagan

3

জাভাস্ক্রিপ্ট (৪ টি টুইট / 343 317 বাইট / 243 অতিরিক্ত)

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

টুইট 1 - পি 0 (11 বাইট)

chrome a.js

টুইট ২ (৮২ বাইট)

a=y=z=j=0,onkeyup=b=>R((k=b.keyCode-40)?z*2*(d=k+3?k+1?1:.5:2)&65|j*d&a||(z*=d):0)

টুইট 3 (126 বাইট)

R=d=>{d||(!(!y||a&j>>5)||(y>25?a=0:(31^31&(a|=j)>>y||(a=a>>y+5<<y|a&-1>>>-y-5>>5),y=0)),y-=5),y>=0||(y=30,z=12/(new Date%3+1))

টুইট 4 (98 বাইট)

j=z<<y;for(o="",i=30;i--;)o+=1<<i&(a|j)?"#":"_",o+=i%5?"":"<br>";O.innerHTML=o},setInterval(R,300)

এটি জেএসফিডেলে চালান: https://jsfiddle.net/CookieJon/7Lenhcge/

(কীবোর্ড ইভেন্টগুলির জন্য ফোকাস সরবরাহ করতে আউটপুট ফলকে ক্লিক করুন)


দয়া করে প্রশ্নের আংশিক সমাপ্ত বা অবৈধ উত্তর পোস্ট করবেন না। অনুযায়ী এই মেটা আলোচনা এই উত্তরটি পর্যন্ত এটি বৈশিষ্ট প্রশ্নে রূপরেখা মেনে মুছে ফেলা হবে
PunPun1000

@ PunPun1000 আমার ক্ষমা। এটি এখন সম্পূর্ণ এবং অপসারণযোগ্য।
শৃঙ্খলা

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