আমি আপনার মতো কোড গল্ফ ধাঁধা সমাধান করতাম তবে আমি হাঁটুতে তীর নিয়েছিলাম


18

তীর দিয়ে হাঁটুতে আঘাত হানা এই মুহূর্তে পছন্দের আঘাত বলে মনে হচ্ছে । যেমন, আমি নিম্নলিখিত গল্ফ চ্যালেঞ্জ প্রস্তাব।

আপনার কাছে এমন এক অ্যাডভেঞ্চারার রয়েছে যা দেখতে এইরকম দেখাচ্ছে:

  O
 /|\
/ | \
  |
  |
 / \
/   \

একটি পাঠ্য ফাইল দেওয়া হয়েছে যাতে একটি ধনুক ( }প্রতীক হিসাবে আঁকা ), দেয়ালের একটি সেট ( #প্রতীক হিসাবে আঁকা ) এবং একটি অ্যাডভেঞ্চারার রয়েছে, সবচেয়ে ছোট কোডটি লিখুন যা কোণ এবং প্রাথমিক বেগ গণনা করে যেখানে আঘাত করার জন্য আপনাকে একটি তীর চালানো উচিত হাঁটুতে তাকে।

নিম্নলিখিতটি ধরে নিন:

  • ফাইলের প্রতিটি অক্ষর 0.5 x 0.5 মিটার।
  • তীরটি কেন্দ্রের }অর্থাত্ একটি অফসেট থেকে নিক্ষেপ করা হয়0.25m, 0.25m
  • মাধ্যাকর্ষণ হয় 10ms^-2
  • তীরের ওজন 0.1kg
  • তীরটি একটি বিন্দু, অর্থাৎ সংঘর্ষগুলি তখনই ঘটে যখন তীরের স্থানাঙ্কটি কোনও একটি ব্লকে প্রবেশ করে।
  • সর্বাধিক প্রাথমিক গতিবেগ 50m/s
  • কোণ 0 (সোজা উপরে) এবং 180 (সোজা নীচে) এর মধ্যে হতে পারে
  • অ্যাডভেঞ্চারারের পায়ের কোনও অংশকে আঘাত করা হাঁটুতে আঘাত বলে বিবেচিত।
  • একটি প্রাচীর ( #চরিত্র) একটি পুরো 0.5mx 0.5 মি ব্লক গ্রহণ করে।
  • তীরটি ফাইলের "শীর্ষে" যেতে পারে, তবে #অক্ষরের সিলিং দিয়ে ইনপুটটি থামাতে কিছুই নেই ।
  • আপনি তীরগুলি দিয়ে দেয়াল প্রবেশ করতে পারবেন না।
  • অ্যাডভেঞ্চারারের অন্য কোনও অংশে আঘাত করা অনুমোদিত নয়!
  • হাঁটুতে আঘাত করা যদি অসম্ভব হয় তবে আপনার একটি ত্রুটি প্রদর্শন করা উচিত।

উদাহরণ ইনপুট:

                                 #                        
}                                                     O   
                        #                            /|\  
                                                    / | \ 
            #                                         |   
                            #                         |   
                                                     / \  
                                                    /   \  

আপনার যদি প্রয়োজন হয় তবে নির্দ্বিধায় প্রশ্ন জিজ্ঞাসা করুন :)


1
তীরটি কি টেক্সট ফাইল দ্বারা চিত্রিত অঞ্চল "ওভার" ভ্রমণ করতে পারে?
জেবি

2
3 মিটারের বেশি লম্বা আপনি কতজনকে জানেন? : পি
পিটার টেলর

@ জেবি - হ্যাঁ, তবে বড় লাইন দিয়ে শুরু হওয়া ইনপুট থামানোর মতো কিছুই নেই #############...
বহুবর্ষীয়

2
@ পিটারটেলর - সবাই জানেন যে আরপিজি গেমের লোকেরা অসতর্কিতভাবে বিশাল;)
বহুবর্ষীয়

2
তীরের ওজন নিরর্থক, নিশ্চয়ই?
পল আর

উত্তর:


11

পাইথন, 599 অক্ষর

import os,sys
from math import*
I=os.read(0,999)
O=[]
h=v=0
for i in I:
 if'#'==i:O+=[(h,v,h+1,v+1),(h+1,v,h,v+1)]
 if'O'==i:O+=[(h,v+1,h-2,v+3)];T=(h,v+5,h-2,v+7)
 if'}'==i:e=h+.5;c=v+.5
 h+=1
 if'\n'==i:v+=1;h=0

def X(K,L):
 A,B,C=K;p=L[0];q=L[2]-p;r=L[1];s=L[3]-r;A,B,C=A*q*q,2*A*p*q+B*q-s,A*p*p+B*p+C-r;d=B*B-4*A*C
 return 0 if d<0 else any(0<x<1 for x in[(sqrt(d)-B)/2/A,(-sqrt(d)-B)/2/A])

R=range(1,999)
for v in R:
 for z in R:
  z*=pi/999;d=v*sin(z)/10;b=-v*cos(z)/10
  K=20/d/d,b/d-40*e/d/d,c+20*e*e/d/d-b*e/d
  if X(K,T)and not any(X(K,x)for x in O):print v/2,z;sys.exit(0)
print'ERROR'

X(K,L)রুটিন একটি অধিবৃত্ত লাগে K=(a,b,c)প্রতিনিধিত্বমূলক Y = কুঠার ^ 2 + bx + C এবং লাইন বিভাগটির L=(a,b,c,d)মধ্যে সেগমেন্ট প্রতিনিধিত্বমূলক (ক, খ) এবং (গ, ঘ) । উভয় বাধা ( O) এবং লক্ষ্য ( T) লাইন বিভাগ হিসাবে পুনরায় উপস্থাপন করা হয়। সমস্ত দূরত্ব 2 এর গুণক দ্বারা মাপা হয়।

উদাহরণ ইনপুট নিম্নলিখিত ট্রাজেক্টোরি দেয় (ডিফল্টরূপে, সর্বনিম্ন বেগ)

  --                             #          --            
--                                            -       O   
                        #                      -     /|\  
                                                -   / | \ 
            #                                    -    |   
                            #                     -   |   
                                                   - / \  
                                                    -   \  

আপনি Rসর্বোচ্চ গতিপথ পেতে বিপরীত করতে পারেন:

                                 #                        
-------------                                         O   
             -----------#                            /|\  
                        --------                    / | \ 
            #                   -------               |   
                            #          -----          |   
                                            -----    / \  
                                                 -----  \  

ভাল কাজ. কেবল অভিযোগটি হ'ল ইনপুট আকারের সীমা 999 বাইট। এই ASCII অঙ্কনগুলির সম্ভাব্য আকার বিবেচনা করে এটি আরও সহজেই হতে পারে। 9999 কেবলমাত্র 1 টি চরিত্রের ব্যয় করে আরও বুদ্ধিমান হয়ে উঠবে। (যদিও সেই মুহুর্তে আপনি পাশাপাশি 8**5k৪ কেবি পেতেও পারেন)
বহুবর্ষীয়

চমত্কার নিশ্চিত তারপর আপনি বরাদ্দ করে যে একটি অক্ষর বাঁচাতে পারে w=v+1এবং 3 দৃষ্টান্ত প্রতিস্থাপন v+1সঙ্গে w। যদিও আমি পাইথনকে বেশি কোড করি না, তাই আমি ভুল হতে পারি।
বহুব্যাপী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.