একটি দুঃখিত বোর্ড মুদ্রণ করুন


19

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

আপনার কাজটি হ'ল আমি আপনাকে যা বলছি সেখানে টুকরো টুকরো করে একটি দুঃখিত বোর্ডের একটি সংস্করণ আউটপুট করা।

চশমা

প্রথমত, এখানে একটি আসল দুঃখিত একটি চিত্র আছে ! রেফারেন্সের জন্য বোর্ড:

দুঃখিত!  তক্তা

খালি বোর্ডটি দেখতে দেখতে:

# > - - o # # # # > - - - o # #
#   #   S                     v
o   #             H # # # # # |
|   #                         |
|   #                       S o
|   #                         #
^   H                         #
#                             #
#                             #
#                         H   v
#                         #   |
o S                       #   |
|                         #   |
| # # # # # H             #   o
^                     S   #   #
# # o - - - < # # # # o - - < #

কয়েকটি বৈশিষ্ট্য লক্ষ্য করুন।

  • #এর খালি স্কোয়ার আছে।
  • S'S এবং Hএর স্টার্ট এর এবং বাড়িতে এর যথাক্রমে।
  • >v<^এর, স্লাইড শুরুর যা অভিমুখ তারা মুখোমুখি উপর নির্ভর করে।
  • |'S এবং -এর, স্লাইডের middles যদি তাঁরা অনুভূমিক বা উল্লম্ব করছি উপর নির্ভর করে।
  • oএর শেষ স্লাইডের এর হয়।
  • এটিকে আরও বর্গক্ষেত্রের মতো দেখানোর জন্য প্রতিটি কলাম স্পেসের কলাম দ্বারা পৃথক করা হয়।

এখন আপনাকে যা করতে হবে তা এখানে :

  • আপনার ইনপুটটি বোর্ডে স্থাপন করা বিভিন্ন টুকরো স্থানাঙ্কের একটি তালিকা is
  • স্থানাঙ্কগুলি 0নীচের বর্ণের (চিত্রের হলুদ) শুরুর বাইরের স্কোয়ারে শুরু হয় এবং প্রতি বর্গক্ষেত্রের দিক দিয়ে এক করে বাড়িয়ে তোলে।
  • এই 60 স্কোয়ারের পরে, সুরক্ষিত অঞ্চলগুলির পরবর্তী এবং শেষ 20 স্থানাঙ্ক রয়েছে যা নীচের দিকের একটি থেকে শুরু হয়ে (যা 60-64 পায়), তারপরে ঘড়ির কাঁটার দিকে চলে যাবে।
  • আপনাকে *সমস্ত খেলোয়াড়ের নীচের চরিত্রটি প্রতিস্থাপন করে সঠিক স্থানাঙ্কে তারার ( গুলি) স্থাপন করতে হবে।
  • অধিকন্তু, খেলোয়াড়দের মধ্যে যদি কোনও স্লাইডারের শুরু স্কয়ারে থাকে তবে তাদের রাখার আগে তাদের স্লাইডারের শেষের দিকে নিয়ে যান।
  • আপনি ধরে নিতে পারেন যে স্লাইডারগুলি সমাধান করার আগে বা পরে কোনও সংঘর্ষ হবে না।
  • আপনার হোম বা স্টার্টসের বিষয়ে চিন্তা করার দরকার নেই।
  • আপনি চাইলে আপনাকে 1-ইনডেক্স করা যেতে পারে তবে পরীক্ষার কেসগুলি 0-সূচিযুক্ত।

পরীক্ষার মামলা

[0, 20] ->

# > - - o # # # # > - - - o # #
#   #   S                     v
*   #             H # # # # # |
|   #                         |
|   #                       S o
|   #                         #
^   H                         #
#                             #
#                             #
#                         H   v
#                         #   |
o S                       #   |
|                         #   |
| # # # # # H             #   o
^                     S   #   #
# # o - - - < # # # # * - - < #

[2, 7, 66] ->

# > - - o # # # # > - - - o # #
#   #   S                     v
o   #             H # # # # # |
|   #                         |
|   #                       S o
|   #                         #
^   H                         #
#                             #
#                             #
#                         H   v
#                         #   |
o S                       #   |
|                         #   |
| # * # # # H             #   o
^                     S   #   #
# # o - * - < # # * # o - - < #

1
আমি ভেবে দেখতাম যদি মানগুলি সংশ্লিষ্ট প্রারম্ভিক স্কোয়ারগুলি থেকে দূরত্ব হিসাবে দেওয়া হয় (সুতরাং উদাহরণস্বরূপ প্রথম পরীক্ষার কেসটি হতে পারে 0, 5এবং দ্বিতীয়টি হতে পারে 2, 60, 37)।
নীল

@ নীল আপনি কীভাবে জানবেন কোনটি শুরু স্কয়ারটি ব্যবহার করতে হবে?
মালটিসেন

দুঃখিত, আমি ধরে নিয়েছি আপনি চৌকো দিকের ক্রমে স্কোয়ারগুলি ব্যবহার করেছেন তবে আমি অনুমান করি যে এটি 2-প্লেয়ার গেমের জন্য খুব সুষ্ঠু হবে না।
নীল

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

আমার বিভ্রান্তি সূচিকর্ম সম্পর্কে, 60 এর আগে এবং পরে পৌঁছে গেছে এবং কখন হোম বিভাগে অবস্থানগুলি চিহ্নিত করতে হবে। আমি মনে করি আপনি যদি আপনার উদাহরণগুলি আরও স্পষ্ট করেন তবে এটি আরও অর্থবোধ করবে। নাহলে দেখতে বেশ দুর্দান্ত লাগছে।
জ্যাকসকোনাক

উত্তর:


1

পাইথন 2, 476 বাইট

সংক্ষিপ্ত 3-লাইনের সমাধান ( এটি অনলাইনে চেষ্টা করুন )

s=map(list,''.join(b if b in'#^v<>-|oSH~'else' '*int(b,16)for b in "#>--o####>---o##~#1#1SAv~o1#6H#####|~|1#C|~|1#BSo~|1#C#~^1HC#~#E#~#E#~#CH1v~#C#1|~oSB#1|~|C#1|~|#####H6#1o~^AS1#1#~##o---<####o--<#").split('~'))
for i in input():x,y=(lambda n:([11-n,15]*12+[0,26-n]*14+[n-26,0]*16+[15,n-41]*14+[71-n,15]*4+[13,n-50]*5+[70-n,13]*5+[2,75-n]*5+[n-65,2]*5)[2*n:2*n+2])((lambda n:4if n in[5,20,35,50]else 3if n in[12,27,42,57]else 0)(i)+i);s[y][x]='*'
for r in s:print' '.join(r)

534-এ ওয়ান-লাইনার ( এটি অনলাইনে চেষ্টা করুন ):

for r in(lambda B,I:[[[i,j]in map(lambda n:([11-n,15]*12+[0,26-n]*14+[n-26,0]*16+[15,n-41]*14+[71-n,15]*4+[13,n-50]*5+[n-64,13]*5+[2,75-n]*5+[n-65,2]*5)[2*n:2*n+2],map(lambda n:n+4if n in[5,20,35,50]else n+3if n in[12,27,42,57]else n,I))and'*'or b for i,b in enumerate(a)]for j,a in enumerate(B)])(map(list,''.join(b if b in'#^v<>-|oSH~'else' '*int(b,16)for b in"#>--o####>---o##~#1#1SAv~o1#6H#####|~|1#C|~|1#BSo~|1#C#~^1HC#~#E#~#E#~#CH1v~#C#1|~oSB#1|~|C#1|~|#####H6#1o~^AS1#1#~##o---<####o--<#").split('~')),input()):print' '.join(r)

আমি নিরাপদ অঞ্চলের সূচকগুলি এইভাবে ধরে নিয়েছি:

#  >  -  -  o  #  #  #  #  >  -  -  -  o  #  #
#     74    S                                v
o     73                   H 75 76 77 78 79  |
|     72                                     |
|     71                                  S  o
|     70                                     #
^     H                                      #
#                                            #
#                                            #
#                                      H     v
#                                      60    |
o  S                                   61    |
|                                      62    |
|  69 68 67 66 65 H                    63    o
^                                S     64    #
#  #  o  -  -  -  <  #  #  #  #  o  -  -  <  #

ব্যাখ্যা (আরও ভাল বোঝার জন্য লাইনগুলি কিছুটা আলাদা করা হয়েছে):

# Hardcode board. Spaces are changed to their number in hex (as there are up to 14 spaces in row)
# Unfortunatly v^<> characters made board non-symmetrical and replacing chars costs too much in python, so I had to hardcode it all
B="#>--o####>---o##~#1#1SAv~o1#6H#####|~|1#C|~|1#BSo~|1#C#~^1HC#~#E#~#E#~#CH1v~#C#1|~oSB#1|~|C#1|~|#####H6#1o~^AS1#1#~##o---<####o--<#"

# Encode board to list of lists of characters
s=map(list,''.join(b if b in'#^v<>-|oSH~'else' '*int(b,16)for b in B).split('~'))

# Map coordinates, based on n (awfully long)
# Creates long list (lenght of 80) with values based on n and only one valid, which occures under index n
l=lambda n:([11-n,15]*12+[0,26-n]*14+[n-26,0]*16+[15,n-41]*14+[71-n,15]*4+[13,n-50]*5+[70-n,13]*5+[2,75-n]*5+[n-65,2]*5)[2*n:2*n+2]

# Returns additional move of n if it appers to be on slide start
j=lambda n:4if n in[5,20,35,50]else 3if n in[12,27,42,57]else 0

# Here takes input as list of numbers, get coordinates for them and update board with *
for i in input():x,y=l(j(i)+i);s[y][x]='*'

# Print board, spacing characters with one whitespace
for r in s:print' '.join(r)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.