কোড গল্ফ গল্ফ গল্ফ


24

গল্ফ চ্যালেঞ্জ

নীচে দেওয়া ASCII "সবুজ" দেওয়া হয়েছে।

|          |
|  |>      |
|  |       |
|  O       |
|          |
|          |
|          |
|          |
|          |
|          |

যাক |বোঝাতে একটি প্রাচীর
আসুন |বোঝাতে অর্ধেক পতাকা মেরু
আসুন >বোঝাতে মেরু থাকা ফ্ল্যাগ
আসুন Oবোঝাতে গর্ত
আসুন oবোঝাতে বল

"সবুজ" এর মাত্রা 10x10। দুটি দেয়ালের মধ্যে দশটি স্পেস রয়েছে |
দশটি স্পেসও রয়েছে, সবুজটির উপর এবং নীচের মাঝে খালি বা না।

চ্যালেঞ্জ

একটি x এবং y মান ইনপুট করুন বা সবুজ উপর একটি গল্ফ বল "অঙ্কুর" করতে দুটি এলোমেলো সংখ্যা তৈরি করুন।
যদি x, y উত্পন্ন হয় তবে গর্তটি বা পতাকাটির মেরু / পতাকা আউটপুটটি স্পর্শ না করে "আবার চেষ্টা করুন!"
যদি x, y উত্পন্ন হোল আউটপুটটিকে হিট করে "এক হোল!"
যদি x, y উত্পন্ন পোলের আউটপুটটিকে আঘাত করে "ভাগ্যবান শট!"
যদি x, y উত্পন্ন হ'ল পতাকা আউটপুটটিকে "ক্লোজ ওয়ান!"

শটের পরে, বলের অবস্থান সবুজগুলিতে একটি দিয়ে আউটপুট করুন o, এটির যে কোনও চরিত্রের পরিবর্তে। উপরোক্ত সম্পর্কিত উক্তিটিও আউটপুট করুন।

উদাহরণ:

//Hole in one example, the O was replaced with a o
Randomed x = 3
Randomed y = 4

"Hole in One!"

|          |
|  |>      |
|  |       |
|  o       |
|          |
|          |
|          |
|          |
|          |
|          |


//Clone example, the top half of the pole was replaced with a o
Randomed x = 3
Randomed y = 2

"Lucky Shot!"

|          |
|  o>      |
|  |       |
|  O       |
|          |
|          |
|          |
|          |
|          |
|          |

//Lucky Shot example, the > was replaced with a o
Randomed x = 4
Randomed y = 2

"Close One!"

|          |
|  |o      |
|  |       |
|  O       |
|          |
|          |
|          |
|          |
|          |
|          |

//Try Again example, the <space> was replaced with a o
Randomed x = 5
Randomed y = 1

"Try Again!"

|     o    |
|  |>      |
|  |       |
|  O       |
|          |
|          |
|          |
|          |
|          |
|          |

মজা করুন এবং শুভকামনা করুন এবং এটি হিসাবে সংক্ষিপ্ততম কোডের জয়!


পতাকা / মেরু কি সর্বদা একই অবস্থানে থাকে?
corvus_192

আপনি এটি যেখানেই রেখে দিতে পারেন বা এটি নিয়ে কিছু মজা করতে পারেন এবং এটিকে চারপাশে স্থানান্তর করতে পারেন। আমি অনুভব করেছি যে এটি ঘুরতে খুব ব্যথা হবে তবে আমি মনে করি এটি একটি মজাদার চ্যালেঞ্জ যুক্ত করেছে। আপনি যদি এটি স্থানান্তর করেন তবে আমি নিশ্চিত করব যে <2 h <= 10 যেখানে h গর্তের উচ্চতা সূচক। এইভাবে পতাকাটি পর্দার বাইরে নেই।
জ্যাকসোনাক

2
হয় দু'টি প্যারামিটার i এবং কে নিন যেখানে 0 <i <= 10 এবং 0 <কে <= 10 বা র্যান্ডম সংখ্যার প্রজন্ম ব্যবহার করে আই এবং কে সেট করুন
জ্যাকসোনাক

1
@ করভাস_192 একেবারে
জ্যাকসকোনাক

1
এই আউটপুট স্ট্রিংগুলি কোড গল্ফের জন্য বেদনাদায়ক। যেহেতু এখনও কোনও উত্তর নেই, সেগুলিকে একটি ইনপুট হিসাবে নেওয়ার অনুমতি বিবেচনা করুন
লুইস মেন্ডো

উত্তর:


10

জাভাস্ক্রিপ্ট (ES6) 210 208 193 184 বাইট

f=(a,b)=>((s=[...(`
|          |`).repeat(10)])[17]=s[30]='|',s[18]='>',s[43]=0,s[a+=1+b*13]='o',(a-17&&a-30?a-18?a-43?'Try Again!':'Hole in One!':'Close One!':'Lucky Shot!')+s.join``)

ডেমো


8

জেলি , 78 বাইট

ċЀ®Ḍị“ȷþḄ7Ẋ“þẹƊ⁴ḳL&Ṛ“qĠṂ®““ÞzḊṁġ“»;”!Ṅṛ
⁶ẋ“€¡®µC‘ż“|>|O”©F”o⁸¦Ç
ṭḌ‘Çs⁵j@€⁾||Y

Play একটি দক্ষতা-খেলা বা বিষ্ঠা-শুটTryItOnline!

(ক্র্যাপ-শ্যুটের জন্য আরও বাইট খরচ হয়)।

কিভাবে?

ṭḌ‘Çs⁵j@€⁾||Y - Main link: x, y (0-based)
ṭ             - tack            -> [y, x]
 Ḍ            - cast to decimal -> 10y+x
  ‘           - increment       -> 10y+x+1
   Ç          - call last link (1) as a monad
    s⁵        - split into chunks of size 10 (rows of green display)
         ⁾||  - literal ['|','|']
      j@€     - join €ach  with reversed @rguments (make the border)
            Y - join with line feeds
              - implicit print

⁶ẋ“€¡®µC‘ż“|>|O”©F”o⁸¦Ç - Link 1, Make green & place the ball: decimal 1-based location
  “€¡®µC‘               - code page indexes -> [12,0,8,9,67]
⁶                       - literal ' '
 ẋ                      - repeat (vectorises)
         ż              - zip with
          “|>|O”        - literal ['|','>','|','O']
                ©       -     and place the flag parts into the register
                 F      - flatten list
                     ¦  - apply to index at
                    ⁸   - input value
                  ”o    - literal 'o'
                      Ç - call the last link (2) as a monad

ċЀ®Ḍị“ȷþḄ7Ẋ“þẹƊ⁴ḳL&Ṛ“qĠṂ®““ÞzḊṁġ“»;”!Ṅṛ - Link 2, Print message: green with ball
   ®                                     - read register (the flag parts)     | > | O
ċЀ                                      - count occurrences e.g. HoleInOne: [2,1,2,0]
    Ḍ                                    - cast to decimal                  ->2120
     ị                                   - index into (1-based & modular) 2120 % 6 = 2
      “ȷþḄ7Ẋ“þẹƊ⁴ḳL&Ṛ“qĠṂ®““ÞzḊṁġ“»      - compressed list of (6) strings:
              ...["Lucky Shot","Hole in One","Try Again","","Close One",""]
                                   ;     - concatenate with
                                    ”!   - literal '!'
                                      Ṅ  - print with linefeed
                                       ṛ - yield right argument (the green)

8

পাইথন 2, 290 264 262 252 248 245 বাইট

এটি সুন্দর নয় এবং এটি সংক্ষিপ্তও নয় তবে আমি ক্লান্ত এবং এটির প্রথম একমাত্র পাইথন উত্তর। এক্স, ওয়াই ফর্ম্যাটে শট প্রবেশ করুন।

সম্পাদন করা

তালিকাটি তৈরির পথে পুনরায় সংজ্ঞা দিয়ে গল্ফ অফ। এখনও দীর্ঘ যদি বিবৃতি সঙ্গে কোন ভাগ্য।

-2 যদি অভিধানের সাথে দীর্ঘ এবং যদি সংক্ষিপ্ত করে প্রতিস্থাপন করে।

-10 @ নুডল 9 -কে ধন্যবাদ দিয়ে আমি এটি মিস করেছি :)

-4 - আবার ধন্যবাদ :)

আরও 3 টি বন্ধ। ধন্যবাদ।

x,y=input();a=[' ']*120;a[15]=a[27]='|';a[16],a[39],b='>','0',x+y*12
a[b],k='o',"Lucky Shot!";l={16:"Close One!",15:k,27:k,39:"Hole in One!"}
print l[b]if b in l else"Try Again!"
for z in range(10):c=z*12;a[c]=a[c+11]='|';print''.join(a[c:c+12])

যে কারও পক্ষে যুক্তিতে আগ্রহী, মন্তব্যে অসম্পূর্ণ (১৩১16 বাইট তবে সহজেই যদি কেউ তাদের স্মরণ করে তবে 3.5 "ডিস্কে সহজেই ফিট করে):

x,y=input()                                     #Get the input as a tuple
a=[' ']*120                                     #Create a great big list of spaces for the whole green
a[15]=a[27]='|'                                 #Put the flag pole in place
a[16]='>'                                       #Add the flag
a[39]='0'                                       #Add the hole
b=x+y*12                                        #Get the absolute position in the list of the input tuple 
a[b]='o'                                        #Place the ball on the green
k="Lucky Shot!"                                 #Set a variable for k because it is long and we're going to use it twice
l={16:"Close One!",15:k,27:k,39:"Hole in One!"} #Create a dictionary of the comments (using k)
print l[b]if b in l else"Try Again!"            #If the absolute index is in the dict then print it otherwise print the default
for z in range(10):                             #Loop through the length of the green
    c=z*12                                      #Set a variable for the start point of each line
    a[c]=a[c+11]='|'                            #Add the left and right walls
    print''.join(a[c:c+12])                     #Print each line in turn. Because this is in a for loop then Python will deal with newlines

গল্ফ চ্যালেঞ্জের ক্ষেত্রে প্রথমত কোনও অভিধানই সেরা ডেটা ফর্ম্যাট হয়ে উঠেছে in


অভিধান কী হিসাবে হ্যাশযোগ্য এমন যে কোনও কিছুই আপনি ব্যবহার করতে পারেন
নুডল 9

6

সি, 236 বাইট

n,m;char*a[]={"Try Again!","Hole in One!","Lucky Shot!","Close One!"};f(x,y){n=130;m=142-y*13-x;puts(a[(m==87)+2*(m==113|m==100)+3*(m==112)]);while(n--)putchar(m==n?111:n%13?n%13==1|n%13==12|n==113|n==100?124:n==112?62:n==87?79:32:10);}

Ungolfed:

n,m;
char*a[]={"Try Again!","Hole in One!","Lucky Shot!","Close One!"};
f(x,y){
 n=130;
 m=142-y*13-x;
 puts(a[(m==87) + 2*(m==113|m==100) + 3*(m==112)]); 
 while(n--)
  putchar(m==n?111:n%13?n%13==1|n%13==12|n==113|n==100?124:n==112?62:n==87?79:32:10);
}

3

স্কালা, 238 বাইট

(x:Int,y:Int)=>{val r="<          |\n"
('"'+(if(x==2&y==3)"Hole in One!"else
if(x==2&(y==1|y==2))"Lucky Shot!"else
if(x==3&y==1)"Close One!"else
"Try again!")+"'",(r+"|  |>      |\n|  |       |\n|  O       |\n"+r*6)updated(1+x+13*y,'o'))}

জিরো-ইনডেক্সিং ব্যবহার করে।

এটি উপায় খুব পঠনযোগ্য :(

ব্যাখ্যা:

(x:Int,y:Int)=>{                                      //define an anonymous function
  val r="|          |\n"                                //a shortcut for an empty row
  (                                                     //return a tuple of
    '"'+                                                  //a double quote
    (if(x==2&y==3)"Hole in One!"                          //plus the correct string
    else if(x==2&(y==1|y==2))"Lucky Shot!"
    else if(x==3&y==1)"Close One!"
    else "Try again!"
    )+"'"                                                 //and another quote
  ,                                                     //and
    (r+"|  |>      |\n|  |       |\n|  O       |\n"+r*6) //the field
    updated(1+x+13*y,'o')                                //with the (1+x+13*y)th char replaced with a ball
  )
}

আমি 1+x+13*yসঠিক সূচক গণনা করার জন্য সূত্রটি ব্যবহার করেছি , যেহেতু প্রতিটি সারি 13 অক্ষর দীর্ঘ (2 সীমানা, একটি নতুন লাইন এবং 10 টি স্পেস) এবং একটির অফসেট কারণ (0,0) দ্বিতীয় চর হওয়া উচিত।


3

পার্ল, 225 209 বাইট

$_="|".$"x10 ."|
";$_.=sprintf("|  %-8s|
"x3,"|>","|",O).$_ x6;$d="Try Again!";($x,$y)=@ARGV;say$x==3?$y~~[2,3]?"Lucky Shot!":$y==4?"Hole in One!":$d:$x==4&&$y==2?"Close One!":$d;substr($_,$y*13-13+$x,1)=o;say

দুটি আক্ষরিক নিউলাইন প্রতিটি করে একটি বাইট সংরক্ষণ করে। বেশ মান। ঘোষণাটি মুদ্রণ করে, তারপরে গেম বোর্ড।


3

কাঠকয়লা , 99 বাইট

NαNβ× ⁵↑¹⁰‖C←J⁴¦²←>↓²OM⁴↖P⁺⎇∧⁼α³⁼β⁴Hole in One⎇∧⁼α³⁼¹÷β²Lucky Shot⎇∧⁼α⁴⁼β²Close One¦Try Again¦!Jαβo

স্টিডিনে 1-ভিত্তিক ইনপুট, স্পেস-বিভাজিত, নেয়। কোডটির বেশিরভাগটি চারটি বার্তা মুদ্রণের (একটির) জন্য। এটি অনলাইন চেষ্টা করুন!

দ্রষ্টব্য: কাঠকয়লা এখনও কাজ চলছে। এই কোডটি বর্তমান কমিট হিসাবে কাজ করে । যদি এটি ভবিষ্যতে কাজ করা বন্ধ করে দেয় (বিশেষত, যদি টিআইও লিঙ্কটি প্রত্যাশা অনুযায়ী কাজ না করে), তবে আমাকে পিং করুন এবং আমি কাজ করে এমন একটি প্রতিদ্বন্দ্বী আপডেট হওয়া সংস্করণ যুক্ত করার চেষ্টা করব।

ব্যাখ্যা

NαNβ       Read two inputs as numbers into variables α and β

               Construct the green and flag:
× ⁵          Print to canvas 5 spaces
↑¹⁰          Print 10 | characters going up
‖C←         Reflect and copy leftward
             At this point, borders of green are complete; cursor is above left wall
J⁴¦²        Jump 4 units right and 2 down
←>           Print the flag, going leftward
↓²           Print the pin (2 | characters), going downward
O            Print the hole
             The last print was rightward by default, which means we're now at (4,4)
M⁴↖         Move 4 units up and left; cursor is above left wall again

               Add the proper message:
⎇∧⁼α³⁼β⁴    If α is 3 and β is 4 (in the hole):
Hole in One  
⎇∧⁼α³⁼¹÷β²  Else if α is 3 and β is 2 or 3 (hit the pin):
Lucky Shot
⎇∧⁼α⁴⁼β²    Else if α is 4 and β is 2 (hit the flag):
Close One
             Else:
¦Try Again
⁺...¦!       Concatenate a ! to the string
P           Print it without changing the cursor position

               Overwrite the appropriate spot with o:
Jαβ         Jump α units right and β units down
o            Print o

3

ব্রেন-ফ্লাক , 1466 1938 বাইট

(<()>)<>((()()()()()){}){({}[()]<(((((((()()()()()){})){}{}()){}){})<((()()()()()){}){({}[()]<(((((()()){}){}){}){})>)}{}>)((()()()()()){})>)}{}((((()()){}){}){}()){({}[()]<({}<>)<>>)}{}{}{}(((((()()()()()){})){}{}()){})(((((((()()()()()){})){}{}()){}){})<(((()()()){}){}()){({}[()]<({}<>)<>>)}{}{}>)(((()()()){}){}()){({}[()]<({}<>)<>>)}{}{}(((((()()()){}){}){}){}){<>({}<>)}(<>{}((((({}[()])){}){})){}{}{}()<>{}){({}[()]<({}<>)<>>)}{}({}<(((((((()()()){}){})){}{}())){}{}){<>({}<>)}>)(({}<((({}(((()()){}){}){}()){})[()])>)[((((()()){}){}){}){}]){({}[(((()()){}){}){}]){({}[((()()()){}()){}]){{}{}(((((((((()()()){}()){}){}()){}){})[()()()()()])[(()()()){}()])<(((((()()()()()){}){}){}()){}())(((((()()){}){}){}){})>(((()()){}){}){}())(([((()()()){}()){}](({})<>)<>)[((()()){}){}])((<>{}<>[()()()()])[(((()()()()()){}){}){}()])<>}{}{{}((((((((((()()()){}){}){}()){}){}())<>)<>((()()())){}{})[(((()()()()()){})){}{}()])<(((((()()){}){}){}){})((((<>{}<>)((()()()){}()){})[()()()()])[()()()])>[((()()()){}){}])<>}}{}{{}((((((((()()()){}){}){}()){}){}())((()()())){}{})[(((()()()()()){})){}{}()])((((((()()){}){}){}){})<(((((()()()()()){}){({}[()])}{}){})[()()()()()])>)((((((((()()()){}){}){}()){}){}())(()()()){}())()()())((((((()()()){}){}){})){}{})<>}{}}{}{{}(((((((()()()()()){}){({}[()])}{}){})[()()()()()])[((()()){}){}])(()()()){})(((((((((((()()){}){}){}){})))({}<({}{}())>)[()()()()]){}())[(()()()){}()])[(((()()()()()){})){}{}])<>}<>(((((()()){}){}){}()){})

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


আমি কি জিতলাম?


আউটপুট প্রথম লাইন শেষে আপনার নাল বাইট মুদ্রিত হচ্ছে বলে মনে হচ্ছে।
0 '

@ 1000000000 হ্যাঁ আমি আমার সর্বশেষ আপডেটের সাথে এটি স্থির করেছি। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
মেগাটম

2

টিআই-বেসিক, 183 বাইট

Input X
Input Y
X+1➡X
ClrHome
For(I,1,10
Output(I,1,"|
Output(I,12,"|
End
Output(2,4,"|>
Output(3,4,"|
Output(4,4,"O
Output(Y,X,"o
13
Output(1,Ans,"TRY AGAIN!
If X=4 and Y=4
Output(1,Ans,"HOLE IN ONE!
If X=5 and Y=2
Output(1,Ans,"CLOSE ONE!
If Y=2 or Y=3 and X=4
Output(1,Ans,"LUCKY SHOT!

ধার্মিকতা টিআই-বেসিক টোকেন ব্যবহার করে ধন্যবাদ।

|স্বাভাবিকভাবে টাইপ করা যাবে না, কিন্তু এটি অক্ষর সেট রয়েছে।

শটের ফলাফলটি যদি একেবারে ছোট হাতের অক্ষরে থাকে তবে আমাকে জানান।

আমি পরে প্রোগ্রামের ফলাফলের স্ক্রিনশট যুক্ত করব।


2

গ্রোভি - 235 বাইট

আমার প্রথম প্রয়াস - একটি গ্রোভি ক্লোজার শটটির জন্য এক্স এবং ওয়াই সমন্বয় হিসাবে 0 থেকে 9 পর্যন্ত 2 টি পূর্ণসংখ্যা গ্রহণ করে।

{জে, কে-> জে ++; সি = ''; বি = '|'; এফ = '>'; এইচ = 'ও'; এস = ''; ভি = [2: বি, 3: বি, 4: এইচ ]; (0..9) .each {y-> ঠ = (খ + S * 10 + | \ N ') অক্ষর;। ঠ [3] = V [y] এর ?:; s ঠ [4] = y == 2? f: s; if (k == y) {m = [(গুলি): 'আবার চেষ্টা করুন!', (খ): 'ভাগ্যবান শট!', (চ): 'বন্ধ করুন!', (জ): 'এক হোল!'] ["" ​​+ ল [জে]]; ল [জে] = 'ও'}; সি + = ল l; সি + = এম m

2

ডায়ালগ এপিএল , 147 (বা 127) বাইট

(Y, x) যুক্তি হিসাবে গ্রহণ করে।

{G10 10''
G[⍳4;3]←' ||O'
G[2;4]←'>'
G[⊃⍵;⊃⌽⍵]←'o'                G[y;x]←
⎕←'|',G,'|'                  Print G with sides
4 3≡⍵:'Hole in One!'         If (y,x)  (4,3)
(⊂⍵)∊2 3∘.,3:'Lucky Shot!'   If (y,x)  {(2,3), (2,3)}
2 4≡⍵:'Close One!'
'Try Again!'}                Else

১.0.০ সংস্করণ থেকে, আমরা নতুন @অপারেটরের সাথে বাইট-কাউন্টটি প্রায় অর্ধেক করতে পারি ;

@ বাম অপারেন্ডটি ডান যুক্তিতে ডান-অপরেন্ড অবস্থানে রাখে: NewChars @ Positions ⊢ Data

{⎕←'|','|',⍨' ||O>o'@((2 4)⍵,⍨3,⍨¨⍳4)⊢10 10''
4 3≡⍵:'Hole in One!'
(⊂⍵)∊2 3∘.,3:'Lucky Shot!'
2 4≡⍵:'Close One!'
'Try Again!'}

ট্রিপএপিএলকে অনুমতিযোগ্য করার জন্য কিছুটা সংশোধিত কোড:

একের মধ্যে হোল , লাকি শট 1 , লাকি শট 2 , ক্লোজ ওয়ান , এলোমেলো


1

কচ্ছপযুক্ত , 164 বাইট

আবারও, সরল জিনিসগুলির জন্য গল্ফতা এবং ভার্বোসটির মধ্যে টার্টল্ডের ভারসাম্য প্রদর্শনের জন্য (একটি সংখ্যা বাড়ানোর মতো), টার্টল্ড গল্ফিংয়ের ব্যর্থতা বাদে সমস্তকেই পরাজিত করে।

6;11[*'|:'|>;<u]'|rrr'O8:'|u'|>;'|ddd'|l'|uuu<"|>":l'|u'|>11;'|?<:?;( #Try Again!#)(>#Close One!#)(|#Lucky Shot!#)(O#Hole in One!#)'o[|r][ u]dl[|l][ u]u@"-,r["+.r_]

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

নোট করুন এটি অর্ধ শূন্য সূচকযুক্ত এবং অর্ধেক একটি সূচকযুক্ত; x হল একটি সূচকযুক্ত, y হ'ল শূন্য; ৩.৩ একটিতে একটি গর্ত


1

আর, 230 226 বাইট

M=matrix("|",10,10);M[2:9,]=" ";M[34]="0";M[4,2:3]="f";M[15]=">";function(x,y){m=switch(M[y,x],">"="Close One","f"="Lucky Shot","0"="Hole In One","Try again");M[y,x]="o";cat(m,"!\n",sep="");cat(gsub("f","|",M),sep="",fill=10)}

-২ বাইটের জন্য @ বিলিউবকে ধন্যবাদ, কয়েকটি ক্ষেত্রে লক্ষ্য M[a,b]করা সমান M[c]

বিরক্তিকরভাবে, দুটি catকল (!) catএকটিতে প্রবেশ করা যায় না , যেহেতু fillযুক্তিটি বার্তাটি গণ্ডগোল করে । আহা!


1
ম্যাট্রিক্সের ক্রিয়াকে ফাংশনের ভিতরে নিয়ে যান এবং একটি নামহীন তৈরি করুন:function(x,y){M=matrix("|",10,10);M[2:9,]=" ";M[34]="0";M[4,2:3]="f";M[15]=">";m=switch(M[y,x],">"="Close One","f"="Lucky Shot","0"="Hole In One","Try again");M[y,x]="o";cat(m,"!\n",sep="");cat(gsub("f","|",M),sep="",fill=10)}
বিলিওব

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