এ মেরে বাগাটেল


13

চ্যালেঞ্জ

নীচের মত একটি ব্যাগটেল বোর্ড দেওয়া:

|                    |
|    /\            / |
|      \            /|
|  \      \ /\    \  |
|   \   /       \    |
|\     /   /  \      |
|   \            / \ |
|    \               |
|  \    / \ /\    \  |
|\     /   /  \     /|
|                /   |
|    /\         /  / |
|              /     |
|\     /   /  /      |
|                    |
----------------------

আপনার কাজ হ'ল 'নিক্ষেপ' এর একটি তালিকাকে স্কোরে পরিণত করা।

বোর্ডটি সর্বদা 20 টি অক্ষর (প্লাস 2 প্রান্ত) প্রশস্ত হবে, তবে ভেরিয়েবল উচ্চতার। প্রতিটি 'থ্রো' এমন একটি সংখ্যা যা প্রতিনিধিত্ব করে যেখানে বলটি বোর্ডে পড়ে, ডানদিকে ডানদিকে 19 পর্যন্ত বাম দিকে শুরু হয়। এক /বা এ এর মুখোমুখি না হলে প্রতিটি বল সোজা নীচে নেমে যাবে \। একটি /কলামটি বামদিকে একটি \কলামটি শিফট করে এবং একটি বল একটি কলামকে ডানে সরিয়ে দেয়। স্থানান্তরিত হওয়ার পরে, বলটি আগের মত সোজা নিচে চলতে থাকে। নিক্ষিপ্তের স্কোরটি বোর্ডের নীচে যেখানে আঘাত করে তার উপর নির্ভরশীল।

প্রতিটি সমাপ্ত পজিশনের জন্য স্কোরগুলি নিম্নরূপ:

|                    |
----------------------
 01234567899876543210

এবং সমস্ত বোর্ডের জন্য একই। প্রথম এবং শেষ সারি সর্বদা খালি থাকবে। বল যেখানে এটি থেকে অবনমিত হয়েছে নির্বিশেষে নীচে পৌঁছানোর নিশ্চিত করা হয়, তাই কোন বোর্ড যেখানে এটি আটকে পড়া হতে পারে হতে হবে \/, \|বা |/সমন্বয়।

ইনপুট

ইনপুটটি এসটিডিনে থাকবে এবং বোর্ডটির সাথে একটি ফাঁকা লাইন থাকবে তারপরে নিক্ষেপের প্রতিনিধিত্বকারী সংখ্যার একটি স্থান পৃথকীকরণের তালিকা থাকবে।

আউটপুট

প্রদত্ত গেমের জন্য ওপুট মোট স্কোর হওয়া উচিত।

উদাহরণ দুটি

ইনপুট

|                    |
| \                  |
|  \                 |
|   \                |
|    \               |
|     \              |
|      \             |
|       \            |
|        \           |
|         \          |
|          \         |
|           \        |
|            \       |
|             \      |
|              \     |
|               \    |
|                \   |
|                 \  |
|                    |
|                    |
----------------------

1 4 2 19 0 2 4 3 17 13 16

আউটপুট

9

ইনপুট

|                    |
| \                / |
|  \              /  |
|   \            /   |
|    \          /    |
|     \        /     |
|      \      /      |
|       \    /       |
|        \  /        |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
----------------------

15 10 3 8 18 19 0 6 7 10

আউটপুট

72

ইনপুট

|                    |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
|                    |
----------------------

1 4 18 17 14 2 0 19 15

আউটপুট

18

পরীক্ষা স্ক্রিপ্ট

আমি জো এবং ভেন্টোরোর লেখা কিছু পরীক্ষার স্ক্রিপ্ট ব্যবহার করেছি (আমি আশা করি তারা এই বিষয়টির জন্য কিছু পরীক্ষা তৈরি করার জন্য তাদের আপত্তি করবে না ...): -

ব্যবহার: ./test [your program and its arguments]

এটি কোডগল্ফ - সংক্ষিপ্ততম সমাধানের জয়।


আপনি তাদের জন্য আমার উত্পাদিত স্ক্রিপ্টটিও রাখতে পারেন :-)। অবশেষে আমি সেই সর্বজনীন করতে চেয়েছিলাম তবে যতক্ষণ না এখনও এটি করতে চাই না এমন অনেক কাজের জন্য টুইট করা দরকার।
জোয়

@ জোয় একটি জেনারেটর স্ক্রিপ্ট উপলব্ধ থাকার জন্য একটি দরকারী সরঞ্জাম হবে।
গ্যারেথ

উভয় পরীক্ষার সেট এখনই ঠিক করা উচিত।
গ্যারেথ

উত্তর:


3

গল্ফস্ক্রিপ্ট, 60 59 অক্ষর

n/{},)\);{1>:x,,{.x=31%4%(+}%}%[10,.-1%+]+0@[~]{2${=}/+}/\;

আমি তাই একটি সমাধান যা চিহ্ন redefining করে কাজ করে লিখতে প্রলুব্ধ হয় /, \আর space, কিন্তু এটি আসলে বেশ ব্যয়বহুল (বিশেষ করে একবার আপনি আর মূল ব্যবহার করতে পারেন \)।

31%4%(কিথ রান্ডাল সমাধান থেকে nicked এবং জন্য মানচিত্র ASCII কোড করা হয় space, /এবং \থেকে 0, -1, 1যথাক্রমে। (সম্পাদনা ইতিহাস দেখুন)।


1
আশ্চর্যজনকভাবে গল্ফস্ক্রিপ্টের জন্য দীর্ঘ। :-) আপনি কীভাবে এটি পরীক্ষা স্ক্রিপ্টের সাথে কাজ করতে পেলেন? আমি চেষ্টা করার সময় আমার সমস্ত ত্রুটি ছিল ./test ruby golfscript.rb peter.gs? পরিবর্তে পাইপ ইনপুট হিসাবে আমি এটিতে কিছু পরীক্ষা নিক্ষেপ করেছি।
গ্যারেথ

./test-bagatelle.sh `which golfscript.rb` bagatelle2.gs
পিটার টেলর

4

পাইথন 2, 147 132 130 অক্ষর

আমদানি sys
গুলি = 0
ঠ = তালিকা (sys.stdin)
টি-তে এল [-1] .স্প্লিট ():
 P = int- এ (টি) + 1
 আর-তে র জন্য [: - 3]: p- = "/ ".find(r PDp])
 S + = মিনিট (P-1,20-P)
মুদ্রণ এস

2
হতে পারে s+=min(p,19-p)?
কীথ র্যান্ডাল

2
for r in l[:-3]:p-=" /".find(r[p])কয়েক অক্ষর সংরক্ষণ করা উচিত
gnibbler

1
আপনাকে দু'জনকে ধন্যবাদ ); খুব কিন্তু এটি একটি খাটো ট্রাই ক্রিয়া সম্পর্কে অবগত হওয়ার ক্ষতি করতে পারবে না, - বিশেষ করে এর gnibbler কৌতুক সত্যিই সন্ত্রস্ত
cemper93

1
@gnibbler এটি একটি প্রতিভা কৌশল।
গ্যারেথ

1
19-p+1 == 20-p
লোজ্যাকার

3

পাইথন, 165 অক্ষর rs

import sys
A=list(sys.stdin)
C=range(10)
C+=C[::-1]
for L in A[-4::-1]:C=[C[i+ord(L[i+1])%31%4-1]for i in range(20)]
print sum(C[int(x)]for x in A[-1].split())

এটি স্কোরগুলির এক সারি দিয়ে শুরু হয় এবং প্রতিটি সারি থেকে শুরু হওয়া বলগুলির জন্য স্কোরগুলি কী হবে তা গণনা করে নীচ থেকে উপরে চলে যায়।


list(sys.stdin)পরিবর্তেreadlines()
gnibbler

3

রুবি, 123 117 115 107 99 98 97

*b,_,_,n=*$<
p eval n.split.map{|k|i=k.to_i+1
b.map{|l|i-='\ /'.index(l[i])-1}
[i-1,20-i].min}*?+

1
উদ্ধার কেন ব্যবহার করবেন? প্রাথমিক অ্যাসাইনমেন্টে আপনি খ থেকে দুটি লাইন কেটে ফেলতে পারবেন না?
মাইগিমারু

@ মিগিমারু: আসলেই। তবে আমাকে দুটি নয়, তিনটি লাইন কেটে দিতে হবে।
লোজ্যাকার

ঠিক। আমি আরও দুটি লাইন বোঝাতে চাইছি । দুঃখিত।
মাইগিমারু

1
আপনি i-='\ /'...পরিবর্তে আরও একটি চর সংরক্ষণ করতে ব্যবহার করতে পারেন
gnibbler
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.