আলফিসের নতুন ধাঁধাটি বিকাশে সহায়তা করুন!


16

আন্ডারগ্রাউন্ডের রয়েল সায়েন্টিস্ট অ্যালফিস একটি নতুন ধাঁধার জন্য একটি প্রোটোটাইপ শেষ করেছেন। তবে, তিনি এটি পরীক্ষা করতে ইচ্ছুক কাউকে খুঁজে পাচ্ছেন না বলে মনে হয়।

তার ধাঁধার নিয়মগুলি নিম্নরূপ:

বাম পাশের মাঝের টাইল থেকে শুরু করে ডানদিকে পৌঁছানো লক্ষ্য goal সমান সংখ্যাযুক্ত উচ্চতা সহ ধাঁধাগুলির জন্য, দুটি কেন্দ্রের টাইলগুলির নীচে শুরু করুন। (উদাহরণস্বরূপ: শূন্য-সূচকযুক্ত 4x4 অ্যারেতে, প্রারম্ভিক অবস্থানটি হবে [2,0] - সারি 2, কলাম 0 0.)

প্রতিটি রঙিন টাইলের নিজস্ব "দু: খিত" ফাংশন রয়েছে:

  • গোলাপী এবং সবুজ টাইলস ("পি" এবং "জি" হিসাবে উপস্থাপিত) কিছুই করে না
  • লাল এবং হলুদ টাইলস ("আর", "ওয়াই") দুর্গম।
  • কমলা টাইলস ("ও") প্লেয়ারকে কমলার মতো গন্ধযুক্ত করে তোলে
  • বেগুনি টাইলস ("ইউ") খেলোয়াড়কে তারা যে দিকের মুখোমুখি করছে তার দিকে পরবর্তী টাইলের দিকে চাপ দেয় এবং লেবুগুলির মতো গন্ধ দেয়
  • যতক্ষণ না প্লেয়ার কমলার মতো গন্ধ পান না ততক্ষণ ব্লু টাইলস ("বি") প্যাসেবল।

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

অতিরিক্তভাবে, একটি নীল টাইলের সাথে অনুভূমিকভাবে বা অনুভূমিকভাবে সংলগ্ন একটি হলুদ টাইলটি নীল টালিটিও দুর্গম হতে পারে।


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

উদাহরণ হিসাবে এই ধাঁধাটি ব্যবহার করুন:

BGYBG
PGPBG
PUBPB
OUGYB
PPOPP

আপনার প্রোগ্রাম আউটপুট হবে:

BGYBG
PGPBG
PUBPB
OUGYB
PPOPP

BGYBG
PGPBG
*****
OUGYB
PPOPP

ব্যবহৃত কোন ধাঁধা ব্যবহার উত্পন্ন করা আবশ্যক এই

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

RRRR
RPPR
PUOR
RPBP

প্রস্তাবিত পরীক্ষার মামলা: আরআরআরআর | আরপিআর | পুওর | RPBP। যদি আমি কোনও ভুল না করে থাকি তবে এর জন্য আপনি দুটি বার ইউ টাইলের উপর দিয়ে যেতে পারেন। এছাড়াও আমি ইউ এর ব্যবহার সম্পর্কে অনিশ্চিত যখন টাইল দুর্গম হওয়ার পরে, আপনি এখনও ইউ এর উপর দিয়ে যেতে পারেন বা আপনি এটি করতে অক্ষম?
FryAmTheEggman 10'16

@ ফ্রাইআম দ্য এজিগম্যান যদি ইউ টাইলের পরে টাইল দূর্গম হয়, আপনি সেই দিক থেকে ইউ টাইলের উপর দিয়ে চলতে পারবেন না।
এনগ্রেডট্যাঙ্কার

@ টিমিডি অনুমান আমি কখনই প্রথম ধাঁধাটি করিনি তা আমি লক্ষ্য করি নি।
এনগ্রেডট্যাঙ্কার

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

@ শেরলক 9 উফ! ধন্যবাদ আমি করেছি, ধন্যবাদ।
এনারাজেডট্যাঙ্কার

উত্তর:


2

সি 529 বাইট

#define M m[y][x]
char**m,*l,i;main(Y,X){for(;scanf("%ms",&l)>0;)(m=realloc(m,Y*8))[Y-1]=l,X=puts(m[Y++-1])-2;puts("");int s(x,y,c,d){(x<0|y<0|y/Y)?:({if(M^'R'&&M^'Y')if(M^'B'||c^2&&!((y&&m[y-1][x]=='Y')|(x&&m[y][x-1]=='Y')|(y<Y-1&&m[y+1][x]=='Y')|(x<X-1&&m[y][x+1]=='Y'))){x^X?:({M='#';return 1;});c=M^'O'?c:2;M^'U'?:({return s(x+(d<4?d-2:0),y+(d>3?d-5:0),1,d)?({M='#';1;}):0;});if(d^1&&s(x+1,y,c,3)||d^4&&s(x,y+1,c,6)||d^6&&s(x,y-1,c,4)||d^3&&s(x-1,y,c,1)){M='#';return 1;}}});return 0;}s(0,--Y/2,0,3);for(;i<Y;)puts(m[i++]);}

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

অনলাইনে চেষ্টা করুন

Ungolfed

#include <stdio.h>
#include <malloc.h>
char**m,*l,i;
main(Y,X) {
  for(Y=1;scanf("%ms",&l)>0;Y++)
      m=realloc(m,Y*8),
      m[Y-1]=l,
      X=puts(m[Y-1])-2;
  puts("");
  int step(x,y,c,d,i){
    if(x<0||y<0||y>=Y)return 0;
      if(m[y][x]=='R'||m[y][x]=='Y')return 0;
      if(m[y][x]=='B'&&(c==2||(y&&m[y-1][x]=='Y')||(x&&m[y][x-1]=='Y')
               ||(y<Y-1&&m[y+1][x]=='Y')||(x<X-1&&m[y][x+1]=='Y')))return 0;
      if(x==X){m[y][x]='#';return 1;}
      if(m[y][x]=='O')c=2;
      if(m[y][x]=='U')return step(x+(d<4?d-2:0),y+(d>3?d-5:0),1,d,i+1)?({m[y][x]='#';1;}):0;
      else if((d!=1&&step(x+1,y,c,3,i+1)) ||
    (d!=4&&step(x,y+1,c,6,i+1)) || (d!=6&&step(x,y-1,c,4,i+1)) ||
    (d!=3&&step(x-1,y,c,1,i+1))) {m[y][x]='#';return 1;}
      return 0;
  }
  step(0,--Y/2,0,3,0);
  for(;i<Y;)puts(m[i++]);
}

উদাহরণ আউটপুট 1

PYYOPPPP
YRGGRYRG
PGPBYPUR
PYRBOYOG
OBPGYYPP
PRGPOYPO
YPYOUGPP
YGROBRYY
RGRYBBOG

PYY#####
YR##RYRG
###BYPUR
#YRBOYOG
#BPGYYPP
PRGPOYPO
YPYOUGPP
YGROBRYY
RGRYBBOG

উদাহরণ আউটপুট 2

PBYRYPGP
OBRGOOBG
PGPGUROO
PUGORBUG
PUPUUURO
BGGUYPRG
GBOPGGRG
PUPUBUYB
GYOPRPOG

PBYRYPGP
OBRGOOBG
PGPGUROO
PUGORBUG
###UUURO
BG#UYPRG
GB####RG
PUPUB#YB
GYOPR###

উদাহরণ আউটপুট 3

RRRR
RPPR
PUOR
RPBP

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