রক পেপার কাঁচি


21

ক্লাসিক রক পেপার কাঁচি প্রয়োগ করুন।

শর্তাবলী:

  • ব্যবহারকারী 'r', 'p' বা 'গুলি' ইনপুট দেবে
  • প্রোগ্রাম 'r', 'p' বা 's' এবং ফলাফল আউটপুট দেয়
  • প্রোগ্রামের পছন্দ ('আর', 'পি' বা 'গুলি) সিউডো এলোমেলো হতে হবে ( আমি আপনার দিকে হাওয়ার্ড খুঁজছি )
  • ফলাফলটি যে কোনও মুদ্রণযোগ্য চরিত্রের সাথে প্রতিনিধিত্ব করা যেতে পারে, ব্যবহারকারীর ইনপুট কী রয়েছে তার জন্য সর্বদা তিনটি সম্ভাব্য ফলাফল থাকা উচিত (ব্যবহারকারী জিতেন, হারাবেন বা টাই হবেন)।
  • যদি ব্যবহারকারী কিছু না প্রবেশ করে বা 'আর', 'পি' বা 'গুলি' গুরুত্বপূর্ণ না হয় তবে কী ঘটে।

তোমার দরকার:

  • গল্ফড কোড সরবরাহ করুন।
  • অবারিত কোড
  • আপনি কীভাবে প্রোগ্রামটি চালু করবেন
  • একটি নমুনা রান

আমি কম অক্ষরের সাথে উত্তরটি বেছে নেব, যদি কোনও টাই উপস্থাপন করে সর্বাধিক আপিত ভোটিত উত্তর চয়ন করা হয়।

ভাল গল্ফিং এবং ভাগ্য আপনার পক্ষে হতে পারে।

আমি জাভাতে আমার নিজের উত্তর পোস্ট করব।

পাথরের নীচে যারা পাহাড়ে থাকেন তাদের জন্য:

r = শিলা

p = কাগজ

s = কাঁচি

রক: কাঁচি জিতেন, কাগজ দিয়ে হেরে যান, রকের সাথে একটি টাই।

কাগজ: রক জিততে, কাঁচি দিয়ে হারায়, কাগজের সাথে টাই tie

কাঁচি: কাগজে জেতে, রক দিয়ে হারায়, কাঁচি দিয়ে টাই।

বর্তমান অবস্থানসমূহ:

  • ইউএন: ব্যবহারকারীর নাম
  • পিএল: প্রোগ্রামিং ভাষা
  • সিসি: চরিত্র গণনা
  • ইউভি: আপ ভোট
╔══════════════════╦════════════╦══════╦════╗
║        UN        ║     PL     ║  CC  ║ UV ║
╠══════════════════╬════════════╬══════╬════╣
║ Howard           ║ GolfScript ║    6 ║ 15 ║
║ primo            ║ Perl       ║   27 ║  7 ║
║ TwiNight         ║ APL        ║   31 ║  4 ║
║ primo            ║ Perl       ║   33 ║  7 ║
║ marinus          ║ APL        ║   36 ║  5 ║
║ primo            ║ Perl       ║   38 ║  7 ║
║ primo            ║ Perl       ║   48 ║  7 ║
║ manatwork        ║ Ruby       ║   54 ║ 13 ║
║ w0lf             ║ GolfScript ║   62 ║  4 ║
║ tmartin          ║ K          ║   67 ║  2 ║
║ Abhijit          ║ Python 3   ║   74 ║  5 ║
║ beary605         ║ Python 3   ║   76 ║  4 ║
║ rlemon           ║ javascript ║   85 ║  4 ║
║ ugoren           ║ C          ║   86 ║  3 ║
║ Egor Skriptunoff ║ LUA        ║   87 ║  4 ║
║ Shmiddty         ║ javascript ║   87 ║  3 ║
║ Fors             ║ Befunge    ║  107 ║  3 ║
║ Briguy37         ║ javascript ║  117 ║  2 ║
║ Vi.              ║ Clojure    ║  129 ║  1 ║
║ Henrik           ║ C#         ║  167 ║  4 ║
║ dystroy          ║ Go         ║  169 ║  1 ║
║ Praveen          ║ javascript ║  250 ║  0 ║
║ ryan             ║ javascript ║  256 ║  1 ║
║ primo            ║ ferNANDo   ║  259 ║  5 ║
║ anakata          ║ Java       ║  259 ║  1 ║
║ epoch            ║ Java       ║  387 ║  1 ║
║ jdstankosky      ║ LOLCODE    ║ 1397 ║ 15 ║
╚══════════════════╩════════════╩══════╩════╝

আমি হাওয়ার্ডসের উত্তর নির্বাচন করতে পারি না, যেহেতু এটি নিয়মগুলি বাঁকানোর (সফল) প্রচেষ্টা ছিল, তবে আমি তাদের পরিবর্তন করেছি, তাদের অতিরিক্ত স্পষ্ট করে তুলতে।

প্রাইমো 27 অক্ষরের উত্তর নির্বাচন করা যায়নি কারণ এটি প্রতি সেডে সিউডো নয়

প্রিমো-পি উত্তর, আমি "-p 3 বাইট হিসাবে গণনা করা হবে: একটির জন্য, পি এর জন্য, এবং আরও একটি প্রয়োজনীয় সাদা স্থান" with

যারা উত্তর দিয়েছেন তাদের সকলকে ধন্যবাদ, আমি আশা করি আপনার ভাল সময় কাটল!

দ্রষ্টব্য: আমি প্রতি অন্য সপ্তাহে এটি সম্পাদনা করার চেষ্টা করব, টেবিলটি সামঞ্জস্য করতে, এবং আমার নির্বাচিত উত্তরটি যদি কেউ বর্তমানের সাথে মারধর করে, তবে আপনি যদি এখানে এসে থাকেন তবে আপনি চাইলে আপনার উত্তর পোস্ট করুন!


2
আপনি এমন একটি ধারা যোগ করার বিষয়টি বিবেচনা করতে পারেন যা সমস্ত ফলাফল - উইন, লস, ড্র - অবশ্যই সম্ভব।
primo

যেহেতু এটি জনপ্রিয়তা, তাই আমি
LOLZ

আপনি আপনার উত্তর জমা দেওয়ার আগে আমি নিয়মগুলি সম্পাদনা করেছি । জনপ্রিয়তা কেবল টাই ব্রেকার হবে।
জেসেডানো

1
পিএফটি, এখন আর জনপ্রিয়তা নেই? বিরক্তিকর।
jdstankosky

1
@ আনাকাতা সনাতন পার্লগল্ফ নিয়ম অনুসারে (টন হসপেল নিজে ছাড়া অন্য কারও দ্বারা সংকলিত) -p3 বাইট হিসাবে গণ্য হবে: একটির জন্য -, একটির জন্য pএবং আরও একটি সাদা সাদা জায়গা। যাইহোক, সিজি.এসইতে অন্যান্য অনেক প্রতিযোগিতা প্রতিটি বিকল্পকে একক বাইট হিসাবে গণনা করেছে। কোন সিস্টেমে সম্মান জানানো হয় তা সিদ্ধান্ত নেওয়া সাধারণত প্রশ্নটির লেখকের উপর নির্ভর করে।
primo

উত্তর:


9

এপিএল, 31

'TWL'[1+3|-/x⍳⎕←⍞,(?3)⌷x←'rps']

x←'rps'স্ট্রিংকে বরাদ্দ 'rps'করুনx

(?3)⌷ এলোমেলো পূর্ণসংখ্যা 1 ~ 3 চয়ন করুন, এর সূচকটি বেছে নিন x

⍞, ব্যবহারকারীর ইনপুটটি মেশিনের পছন্দ অনুযায়ী প্রস্তুত করুন

⎕← আউটপুট ফলে স্ট্রিং

x⍳ ইনডেক্সফ দ্বারা সংখ্যার অ্যারে রূপান্তর করুন x

-/ দুটি সংখ্যার পার্থক্য

1+|3 মডুলাস 3 এবং প্লাস 1

'TWL'[...] থেকে সূচী 'TWL'

নমুনা

r
rp
L

ব্যবহারকারী চয়ন শিলা, প্রোগ্রাম চয়ন কাগজ: হারান


42

ললকোডি, 1397

দ্রষ্টব্য: আমি লক্ষ্য করেছি এর আগে আমি জিতের প্রয়োজনীয়তাটি গল্ফ টাই-ব্রেকের সাথে জনপ্রিয়তা টাই-ব্রেকের সাথে গল্ফে জনপ্রিয়তা থেকে পরিবর্তন করা হয়েছিল noticed

সত্যিই কোনও কঠোর বাক্য গঠন নেই, তবে আমি নিশ্চিত যে এটি গ্রহণযোগ্য।

HAI
    I HAS A CRAZY, LUCKY, CHALLENGE, TREAT
    I HAS YUMMY ITZ "LOL U LOZED"
    I HAS MEH ITZ "NOWAI TIED"
    I HAS GROSS ITZ "OMG U WONNED"
    I HAS BURNT ITZ "LAME"
    GIMMEH CHALLENGE
    BTW I HOPE I R TEH WINZ
    LOL CRAZY IZ BETWEEN 1 AN 3
    I HAS A SUPA ITZ A BUKKIT
    LOL SUPA'Z 1 R "ROCK"
    LOL SUPA'Z 2 R "PAPER"
    LOL SUPA'Z 3 R "SCIZZORS"
    LOL LUCKY R SUPA'Z CRAZY
    GOT CHALLENGE, WTF?
        OMG "Rock"
            GOT LUCKY, WTF?
                OMG ROCK, LOL TREAT R MEH, GTFO
                OMG PAPER, LOL TREAT R YUMMY, GTFO
                OMG SCIZZORS, LOL TREAT R GROSS, GTFO
            OIC
        OMG "Paper"
            GOT LUCKY, WTF?
                OMG ROCK, LOL TREAT R GROSS, GTFO
                OMG PAPER, LOL TREAT R MEH, GTFO
                OMG SCIZZORS, LOL TREAT R YUMMY, GTFO
            OIC
        OMG "Scissors"
            GOT LUCKY, WTF?
                OMG ROCK, LOL TREAT R YUMMY, GTFO
                OMG PAPER, LOL TREAT R GROSS, GTFO
                OMG SCIZZORS, LOL TREAT R MEH, GTFO
            OIC
        OMGWTF
            VISIBLE "WHAT U SAYZ?", LOL TREAT R BURNT
            GTFO
    OIC
        BOTH SAEM TREAT AN BURNT, O RLY?
            YARLY
                VISIBLE "YOU BURNTED MAH TREAT!"
            NOWAI
                VISIBLE SMOOSH "I GUESSED " AN LUCKY
                VISIBLE TREAT
        KTHX
KTHXBAI

এটি যদি সফলভাবে কার্যকর করা হয় তবে RockPaperScissors.LOLএখানে কিছু সম্ভাব্য এলোমেলো ফলাফল হতে পারে:

  • ইনপুট: Rock- আউটপুট:I GUESSED SCIZZORS U WONNED
  • ইনপুট: Paper- আউটপুট:I GUESSED PAPER NOWAI TIED
  • ইনপুট: Scissors- আউটপুট:I GUESSED ROCK LOL U LOZED
  • ইনপুট: Tuna- আউটপুট:WHAT U SAYZ? YOU BURNTED MAH TREAT!

6
LOLCODE হওয়ার জন্যই +1 দেখে মনে হচ্ছে আমার কাছে কিছুটা শিখানো উচিত, কেবল এলএলএজে জন্য।
ইসজি

23

GolfScript

n"Draw"

উপরে কোড প্রয়োজনীয় কার্যকারিতা প্রয়োগ করে। অতিরিক্তভাবে, এটি নিশ্চিত করে যে কম্পিউটারের কৌশলটির (অনুভূত) অন্যায়তার কারণে প্লেয়ার কখনই রাগান্বিত হতে পারবেন না।

উদার সংস্করণ

n"Draw"

কীভাবে প্রোগ্রামটি চালাবেন

ইনপুট ('আর', 'পি', 'এস' এর একক অক্ষর) এসটিডিএন-তে সরবরাহ করতে হবে, সম্ভবত নিউলাইন দিয়ে শেষ করা উচিত।

একটি নমুনা রান

> echo r | ruby golfscript.rb rockpaperscissors.gsc
r
Draw

কোড ব্যাখ্যা

গল্ফস্ক্রিপ্টের সাথে পরিচিত নয় এমন সকলের জন্য আমি এই কোডটি কীভাবে কাজ করে তার একটি বিশদ ব্যাখ্যা যুক্ত করব। কোডটি মূলত তিনটি অংশে বিদ্যমান।

### Computer's strategy ###
# The strategy used to play r/p/s. 
# The computer is so fast, it can really guess in an instance 
# what the player has played. Since the computer should 
# not play unfair, the best strategy is to always go for a 
# draw and choose the same move.
        # on the stack is player's move
        # choose to play the same -> now the computer's move is on the stack

### Fiddle with input ###
# The input may of may not be delimited by newline.
# In order to make the output readable, we'll give
# a newline here.
n       # Push a newline onto the stack

### Give the result ###
# We can skip a complicated calculation of the result
# since we chose to play draw anyways.
"Draw"  # Push the result onto the stack

# Output is printed automatically when GolfScript code terminates.

নোট

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

  • শুধুমাত্র সঠিক ইনপুট দিয়ে ডিল করুন এবং ব্যবহারকারীকে একটি নতুন লাইন সরবরাহ করতে বাধ্য করুন। এটি একটি চরিত্র সংরক্ষণ করবে will
  • নিয়মের একটি সামান্য অপ্রতুলতা রয়েছে যা নিয়মগুলি বাঁকিয়ে অন্য চরিত্রকে সংরক্ষণ করতে দেয়। ফলাফলটি সর্বদা "উইন" হিসাবে মুদ্রিত হতে পারে - এটি নির্দিষ্ট করা হয়নি যে সঠিক ফলাফলটি মুদ্রণ করতে হবে। তবে মনে রাখবেন যে আপনি যদি কোনও প্রতারণামূলক প্রোগ্রাম প্রয়োগ করতে চান তবে খেলোয়াড়রা শীঘ্রই রেগে যাবে।
  • আউটপুট ফর্ম্যাটটি ভালভাবে নির্দিষ্ট করা হয়নি। আমরা 0আঁকার জন্য আউটপুট হিসাবে চয়ন করতে পারেন । সুতরাং, সংক্ষিপ্ত বৈধ প্রোগ্রামটি হ'ল একক-অক্ষর কোড 0

1
ঠিক আছে, আমি নিয়মে আরও ভার্বোসটি যুক্ত করেছি! আমি স্বীকার করি যে আমি দু'টি ছলনা ভুল করেছি।
জেসেডানো

"একমাত্র বিজয়ী পদক্ষেপ না খেলাই।" : পি
ভাইজেভিঞ্জারটিজেস

1
অসম্পূর্ণ সংস্করণ এবং সত্যই ভাল ব্যাখ্যা জন্য +1
izlin

আমি প্রস্তাব দিচ্ছি n"d", যেমন প্রশ্নটি বলেছে যে আউটপুটটি অবশ্যই কোনও মুদ্রণযোগ্য চরিত্রের হতে হবে, এটি পুরো শব্দ ব্যবহারের বিষয়ে কিছু বলে না।
ender_scythet

20

রুবি: 61 54 টি অক্ষর

o="rps";p o[c=rand(3)],%w{Draw Win Lose}[c.-o.index$_]

একরকম ব্যাখ্যা করেছেন:

পুরো ফলাফলটি নিম্নলিখিত ফলাফলগুলি গণনা করতে হ্রাস পেয়েছে:

  ╲ machine
h  ╲| 0 1 2
u ──┼──────
m 0 │ 0 1 2 
a 1 │ 2 0 1
n 2 │ 1 2 0

সংখ্যাগুলির অর্থ যেখানে:

  • পছন্দ: 0 শিলা, 1 কাগজ, 2 কাঁচি
  • ফলাফল: 0 ড্র, 1 জয়, 2 হেরে

এর জন্য আমি সূত্রটি ব্যবহার করেছি: মেশিন_চয়েস - হিউম্যান_চয়েস। এটি মাঝেমধ্যে নেতিবাচক মানটির ফলাফল দেয়, তবে এটি কেবল সূচক হিসাবে ব্যবহৃত হয় এবং নেতিবাচক সূচকটি পিছনে গণনা করা হয়, সঠিক অ্যারে উপাদানটি বেছে নেবে।

# ┌── choosable object type
# │           ┌── machine's choice numeric code
# │           │                  ┌── result type
# │           │                  │                   ┌── human's choice
# │           │          ┌───────┴───────┐           │
  o="rps";p o[c=rand(3)],%w{Draw Win Lose}[c.-o.index$_]
#           └─────┬────┘                   └─────┬────┘  
#                 └── machine's choice letter    │
#                                                └── result numeric code

ব্যবহৃত পদ্ধতিগুলি (অন্যরা তখন Fixnumতার স্পষ্টতই):

Ungolfed:

object_type = "rps";
result_type = %w{Draw Win Lose}

machine_choice = rand(3)
human_choice = $_

p object_type[machine_choice]

result_code = machine_choice - object_type.index(human_choice)
p result_type[result_code]

নমুনা রান:

bash-4.2$ ruby -nle 'o="rps";p o[c=rand(3)],%w{Draw Win Lose}[c.-o.index$_]'
r
"p"
"Win"
p
"p"
"Draw"
s
"p"
"Lose"

1
আমার সাথে খুব মিল। 7 বাইট [(c-o.index($_)+3)%3]দ্বারা প্রতিস্থাপন করা যেতে পারে [c.-o.index$_]। এছাড়াও, আপনার স্কোরের জন্য -nlখুব কমপক্ষে আপনার দুটি যোগ করা উচিত ।
প্রিমো

1
ডোহ! নেতিবাচক সূচকগুলি ব্যবহার করা আমার প্রথম অভিপ্রায় ছিল। অপারেন্ড অর্ডার সমস্যা সমাধানের পরে আমি এই পদ্ধতির পুনরায় চেষ্টা করতে ভুলে গেছি বলে মনে হচ্ছে। ধন্যবাদ, প্রিয়মো। এবং আরও একটি c.টিপ জন্য আপনাকে ধন্যবাদ ।
manatwork

আমাকে এই উত্তরটি ভালবাসি তা বলতে হবে !!
জেসেডানো

2
@ মান্যাটওয়ার্ক কৌশলটি আসলে .-। বিন্দু অপারেটরগুলির বিন্দুবিহীন অংশগুলির তুলনায় অনেক কম অগ্রাধিকার রয়েছে। উদাহরণস্বরূপ, a/(b+c)দ্বারা প্রতিস্থাপন করা যেতে পারে a./b+c
প্রিমো

9

সি # (১77 টি অক্ষর)

গল্ফ করার আমার প্রথম চেষ্টা

Golfed

using System;class P{static void Main(string[] i){var m="rspr";var a=m[Environment.TickCount%3];Console.WriteLine(a+" "+(i[0][0]==a?"T":m.Contains(i[0]+a)?"W":"L"));}}

আন golfed

using System;

class P
{
    static void Main(string[] i)
    {
        var m = "rspr";
        var a = m[Environment.TickCount % 3];
        Console.WriteLine(a + " " + (i[0][0] == a ? "T" : m.Contains(i[0] + a) ? "W" : "L"));
    }
}

নমুনা চালান অ্যাপ্লিকেশনটির আর্গুমেন্ট 1 হিসাবে একক অক্ষরের ইনপুটগুলির প্রয়োজন হয় r, sবা হয় p

cmd > app.exe r

সমস্ত সম্ভাব্য ফলাফল

  • cmd > app.exe rআউটপুট দেয় r T(শিলা, টাই)
  • cmd > app.exe rআউটপুট দেয় p L(কাগজ, হারিয়ে গেছে)
  • cmd > app.exe rআউটপুট দেয় s W(কাঁচি, জিত)
  • cmd > app.exe pআউটপুট দেয় r W(শিলা, জিত)
  • cmd > app.exe pআউটপুট দেয় p T(কাগজ, টাই)
  • cmd > app.exe pআউটপুট দেয় s L(কাঁচি, হারিয়ে গেছে)
  • cmd > app.exe sআউটপুট দেয় r L(শিলা, হারিয়ে গেছে)
  • cmd > app.exe sআউটপুট দেয় p W(কাগজ, জয়)
  • cmd > app.exe sআউটপুট দেয় s T(কাঁচি, টাই)

9

পার্ল 48 বাইট

$%=rand 3;print"$%
"^B,(Draw,Lose,Win)[$%-=<>^B]

স্ক্রিপ্ট কম্পিউটারের দৃষ্টিকোণ থেকে ফলাফল মুদ্রণ করে, উদাহরণস্বরূপ, যদি প্লেয়ার চয়ন করে rএবং কম্পিউটার চয়ন করে s, ফলাফল হয় Lose$%(ফর্ম্যাট পৃষ্ঠা নম্বর) কম্পিউটারের চাল সঞ্চিত করতে ব্যবহৃত হয়, কারণ এটিতে কেবল একটি পূর্ণসংখ্যার মান থাকতে পারে, যা কোনও পূর্ববর্তী কাস্ট সংরক্ষণ করে।

Ungolfed:

# choose a random move index 0, 1, or 2
$cindex = int(rand 3);
# convert this index to a move
# 0 => r, 1 => s, 2 => p
$cmove = "$cindex" ^ B;

# read the player's move
$pmove = <>;
# convert this move to its index
$pindex = $pmove ^ B;

# print computer's move
print $cmove, $/;
# compare indices, and output result
@result = (Draw, Lose, Win);
print $result[$cindex - $pindex];

নমুনা ব্যবহার:

$ echo p | perl rps.pl
s
Win

$ echo r | perl rps.pl
r
Draw

$ echo s | perl rps.pl
p
Lose

আপনার পদক্ষেপটি অনুসরণ করে স্ক্রিপ্টটি ইন্টারেক্টিভভাবে চালানো যেতে পারে Enter:

$ perl rps.pl
r
s
Lose

বিধি প্রসারিত

পার্ল 35 +3 বাইট

$_=($%=rand 3).(D,L,W)[$%-($_^B)]^B

প্রয়োজন -pকমান্ড লাইন সুইচ (3 বাইট হিসাবে গণনা)। ফলাফল প্রতিটি Win, Loseএবং Drawম্যাপ করা হয়েছে W, L, D। কম্পিউটারের পছন্দ এবং ফলাফলের মধ্যে নতুন লাইন বাদ দেওয়া হয়েছে been

নমুনা ব্যবহার:

$ echo r | perl -p rps.pl
sL

পার্ল 30 +3 বাইট

$_=($%=rand 3).($%-($_^B))%3^B

আবার প্রয়োজন -p। এখানে Win, Loseএবং Drawম্যাপ করা হয়েছে 2, 1এবং 0যথাক্রমে। এটি এখনও প্রযুক্তিগতভাবে অনুগত, কারণ তারা মুদ্রণযোগ্য অক্ষর।

নমুনা ব্যবহার:

$ echo r | perl -p rps.pl
s1

পার্ল 24 +3 বাইট

$_=$^T%3 .($^T-($_^B))%3^B

প্রয়োজন -p, WLD ম্যাপ 2, 1, 0আগের মত। প্রত্যেকটি ^Tএকটি আক্ষরিক আসকি চরিত্রের 20 দ্বারা প্রতিস্থাপন করা উচিত This $^Tস্ক্রিপ্ট শুরু হওয়ার সময় থেকে পর্বের আগের থেকে সেকেন্ডের সংখ্যাটি দেয়। সমস্ত ফলাফল সম্ভব, তবে এটি ছদ্ম-এলোমেলো হিসাবে যথেষ্ট যোগ্যতা অর্জন করে না।

নমুনা ব্যবহার:

$ echo r | perl -p rps.pl
s1

7

এপিএল ( 38 36)

c[i],(⌽↑⌽∘'TWL'¨⍳3)[⍞⍳⍨c←'rps';i←?3]

টাই, জিতে এবং হেরে আউটপুটস 'টি', 'ডাব্লু' এবং 'এল'।

নমুনা রান:

      c[i],(⌽↑⌽∘'TWL'¨⍳3)[⍞⍳⍨c←'rps';i←?3]
p    
rW

(কাগজের জন্য ব্যবহারকারী প্রকারের 'পি'। কম্পিউটার 'আর' (রক) বেছে নেয়, ব্যবহারকারী জিতবে)

ব্যাখ্যা:

  • ⌽↑⌽∘'TWL'¨⍳3: নিম্নলিখিত ম্যাট্রিক্স উত্পন্ন:
TLW
WTL
LWT
  • ⍞⍳⍨c←'rps': cস্ট্রিংয়ে সেট 'rps'করুন, ব্যবহারকারী ইনপুট পড়ুন এবং স্ট্রিংটিতে ব্যবহারকারী ইনপুটটির সূচক পান (এটি 1 থেকে 3 এর মান হবে)। এই সূচকটি ম্যাট্রিক্সে ওয়াই সমন্বয় হিসাবে ব্যবহৃত হয়।
  • i←?3: 1 থেকে 3 পর্যন্ত একটি এলোমেলো নম্বর পান এবং এটি স্টোর করুন, এটি iকম্পিউটারের পছন্দ। এটি ম্যাট্রিক্সে এক্স স্থানাঙ্ক হিসাবে ব্যবহৃত হয়।
  • c[i]: কম্পিউটারের পছন্দটিকে 'আর', 'পি', বা 'এস' হিসাবে প্রদর্শন করে এর iমধ্যে একটি সূচক হিসাবে ব্যবহার করুন c

6

ফেরনাডো 1184 (259 গল্ফড) বাইটস

পাইথনে লিখিত একটি দোভাষী সংযুক্ত পৃষ্ঠার নীচে পাওয়া যাবে।

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

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

not sure, but right now i'm guessing you're_not_paper you're_scissors
you're_paper not you're_not_paper
you're_not_scissors not you're_scissors
you're_rock you're_not_paper you're_not_scissors
you're_rock you're_rock

o_shi-
i'm_not_paper right ?
i'm_scissors right ?
i'm_paper not i'm_not_paper
i'm_not_scissors not i'm_scissors
o_shi- i'm_paper i'm_scissors
o_shi- o_shi-
o_shi-
i'm_rock i'm_not_paper i'm_not_scissors
i'm_rock i'm_rock

print right now but only if i'm_not_paper i'm_scissors
print a newline here, not more, not less

i_win_if i'm_scissors you're_paper
or_if i'm_rock you're_scissors
or_even_if i'm_paper you're_rock

i_win i_win_if or_if
i_win i_win
i_win or_even_if

i_lose_if i'm_paper you're_scissors
or_if i'm_scissors you're_rock
or_even_if i'm_rock you're_paper

i_lose i_lose_if or_if
i_lose i_lose
i_lose or_even_if

i_don't_win not i_win
i_don't_lose not i_lose
we_tie i_don't_win i_don't_lose
we_tie we_tie
we_don't_tie not we_tie

print now if i_win i_lose not i_win i_win
print but not we_tie we_don't_tie i_lose i_don't_win we_don't_tie
print right now i_lose i_win i_win we_don't_tie i_don't_win
print i_don't_win but we_tie or i_don't_win we_tie now

আপনার পদক্ষেপ অনুসরণ করে স্ক্রিপ্টটি ইন্টারেক্টিভভাবে চালানো যেতে পারে Enter

নমুনা ব্যবহার (ধরে নেওয়া যাক আপনি দোভাষীর নাম দিয়েছেন nand.py):

$ python nand.py rps.nand
p
s
Win!

$ python nand.py rps.nand
r
r
Draw

$ python nand.py rps.nand
s
p
Lose

সম্পাদনা করুন: কেবল প্রমাণ করুন যে ফেরনাএন্ডো জাভাটির সাথে প্রতিযোগিতা করতে পারে, এখানে একটি 259 বাইটে 'গল্ফড' সংস্করণ রয়েছে । যুক্তি দৃশ্যত পৃথক; এটি যাচাই করে not winএবং not tieযা কয়েকটি ন্যান্ড গেট সংরক্ষণ করে (কারণ তখন আমার কেবল notপ্লেয়ারের চালগুলির সংস্করণগুলি প্রয়োজন , এবং কারণ not loseআউটপুটটির প্রয়োজন হয়নি)। পড়া প্রায় আকর্ষণীয় না, যদিও।

1 _ _ _ _ _ _ A b
B 1 b
C A B
o
P 1 ?
s 1 ?
p 1 P
S 1 s
o p s
o o
o
r P S
r r
0 1 1 1 0 0 P s
0 0 0 0 1 0 1 0
t s A
u r B
v p C
W t u
W W
W v
t p A
u s B
v r C
D t u
D D
D v
w 1 W
d 1 D
l W D
l l
0 1 0 w l 1 w w
0 1 1 d D l W D
0 1 1 l w w D W
0 W 1 d 0 W d 1

2
হাহাহা o_shi- o_shi- o_shi-এটি হাস্যকর আত্ম-মন্তব্য ছিল ing
jdstankosky

1
@ জেডস্টানকোস্কি সম্ভবত একটিকে ঘূর্ণায়মান করার জন্য কিছুটা অতিরিক্ত প্রতিক্রিয়া প্রকাশ করেছেন q, তবে তিনি বুদ্ধিমান কাজটি করেন এবং পুনরায় তালিকাভুক্ত হন।
প্রিমো

5

পাইথন 3.x: 74 টি অক্ষর

import time
A,f="psr",time.gmtime()[5]%3
print(A[(A.find(input())+f)%3],f)

কিভাবে এটা কাজ করে

Before Machine Proceeds it determines the outcome of the game and based 
on the outcome, it determines the choice which would result in the outcome
viz Human's choice


\     Outcome
 \    0  1  2
  \_____________
H  | 
U 0|  0  1  2
M 1|  1  2  0
A 2|  2  0  1
N  |

Where Choices are represented as 
0 --> Paper
1 --> Scissor
2 --> Rock

Outcome (From Computer's Perspective)
0 --> Draw
1 --> Win
2 --> Fail

Given the sequence of choices as a string
"psr"
So its easy to see, if computer needs to win, it needs to choose the character
next to what human chooses. 
If computer needs to loose, it needs to choose the previous character to what
human chooses


MACHINE's|      CHOICES    |  Formulation
FATE     |-----------------|  For Machine's
         |  P     S      R |  Choice
---------|-----------------|-----------------------------
WIN(1)   |        H ---> M | (CHOICE+1) % 3 = (CHOICE+WIN)%3 
---------|-----------------|-----------------------------
LOSS(2)  |  M     H -----\ | (CHOICE+2)%3   = (CHOICE+LOSS)%3 
         |  ^            | |
         |  |____________| |
---------|-----------------|------------------------------       
DRAW(0)  |        H        | (CHOICE+0)%3   = (CHOICE+DRAW)%3
         |        M        |  
---------|-----------------|         

Combining all the above we have

MACHINE's CHOICE = (HUMAN CHOICE + MACHINE's FATE) % 3

ভাগ্যের উপর ভিত্তি করে, এটি সূত্রের ভিত্তিতে কী পছন্দ করা উচিত তা নির্ধারণ করে

result = (User_choice + machines_fate) % no_of_choices

machine_choice = "psr"[result]

আন-গল্ফ সংস্করণ

import time
choices = "psr"
#time.gmtime() returns the time structure in gmt
#time.gmtime()[5] is the current second tick
fate = time.gmtime()[5]%3
user_choice = input()
result = (choices.find(user_choice)+fate)%len(choices)
machine_choice = choices[result]
print(machine_choice, fate)

নমুনা রান

D:\temp\rivalry>rps.py
r
r 0

D:\temp\rivalry>rps.py
r
p 1

D:\temp\rivalry>rps.py
p
r 2

D:\temp\rivalry>rps.py
p
r 2

D:\temp\rivalry>rps.py
p
s 1

D:\temp\rivalry>rps.py
p
s 1

D:\temp\rivalry>rps.py
p
p 0

2
আকর্ষণীয়, ফলাফলের আগে সিদ্ধান্ত নেওয়া, তারপরে ফলাফলটি পেতে যা কিছু লক্ষণ নিক্ষেপ করা ...
একলিট

1
আমি অধীনে সেকেন্ড যোগ্যতা মধ্যে নিশ্চিত সময় নই "কর্মসূচির পছন্দ ( 'দ', 'পি' বা 'গুলি') ছদ্ম র্যান্ডম হতে হয়েছে" । মিলিসেকেন্ড সম্ভবত, যদিও।
প্রিমো

4

লুয়া, 87

c,n=os.time()%3+1,'rps'print(n:sub(c,c),({'Draw','Win','Defeat'})[(n:find(...)-c)%3+1])

ব্যবহার:

$ lua rps.lua p
s   Defeat

Ungolfed:

names = 'rps'
comp_idx = os.time()%3 + 1                -- 1, 2 or 3 (depends on timer)
comp_move = names:sub(comp_idx, comp_idx) -- 'r', 'p' or 's'
user_move = ...                           -- input parameter: 'r', 'p' or 's'
user_idx = names:find(user_move)          -- 1, 2 or 3
delta_idx = (user_idx - comp_idx) % 3     -- 0, 1 or 2
all_results = {'Draw', 'Win', 'Defeat'}   -- [1]=='Draw', [2]=='Win', [3]=='Defeat'
game_result = all_results[delta_idx + 1]
print(comp_move, game_result)

আপনি 'ড্র' এর পরিবর্তে 'হেরে' এবং 'আঁকুন' এর পরিবর্তে 'টাই' ব্যবহার করে 3 টি অক্ষর সংরক্ষণ করতে পারেন। ;)
হিমশীতল মটর রোড

4

গল্ফস্ক্রিপ্ট 62

একটি বিকল্প গল্ফস্ক্রিপ্ট সমাধান, হাওয়ার্ডের :) এর চেয়ে অনেক বেশি বিরক্তিকর ।

প্রোগ্রামটি এলোমেলোভাবে একটি পদক্ষেপ চয়ন করে এবং ব্যবহারকারীর দৃষ্টিকোণ থেকে ফলাফলটি প্রদর্শন করে।

কোড

'rssppr'.[6rand=]''+:§@+..&,({?)§\'Lose''Win'if}{;;§'Draw'}if`

নমুনা রান

> প্রতিধ্বনি এস | রুবি golfscript.rb rps.gs

r "বা হারাবেন"

অনলাইন পরীক্ষা

: আপনি এখানে প্রোগ্রাম এবং বিভিন্ন ইনপুট সঙ্গে পরীক্ষা চালাতে পারেন http://golfscript.apphb.com/?c=OydzJwoKJ3Jzc3BwcicuWzZyYW5kPV0nJys6wqdAKy4uJiwoez8pwqdcJ0xvc2UnJ1dpbidpZn17OzvCpydEcmF3J31pZmA%3D

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

"অবহেলিত" সংস্করণ

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

# initially, the input (user's move) is on the stack

'rssppr'                # push the string 'rsspr' on the stack...
.                       # ...twice.

[
    6rand               # get a pseudo-random integer in the [0-5] range
    =                   # use the random index to get 
                        # a letter from the string above

]''+                    # workaroud to get the actual letter instead of the
                        # ASCII code

:§                      # assign the randomly chosen letter (computer's move)
                        # to a nice variable called "§"

@                       # rotates last 3 elements on the stack, bringing
                        # the user input in the uppermost position
                        # So, now we have: "rssppr" <computer_move> <user_move>
                        # on the stack

+                       # concatenate the two moves, so now we have a string
                        # that contains both (ex: "rs")

..                      # copy the move string twice
&                       # do a setwise AND to get the DISTINCT elements
,(                      # get the length of the resulting string and subtract 1
                        # (now we have 0 if the letters were equal and non-zero otherwise)

{                       # beginning of block to execute when the moves are different:

                        # now we have on the stack two strings:
                        #     - the string 'rssppr'
                        #     - the string containing the moves (ex: 'rs')

    ?                   # find the second string inside the first one,
                        # and get the index at which it occurs
                        # (or -1 if it does not)

    )                   # increment that number (we now get 0 if no occurrence, 1 otherwise)

    §                   # recall the § variable (so we display the computermove)
    \                   # rotate the uppermost two stack entries

    'Lose''Win'if       # if the move pair is found in the 'rssppr' string, 
                        # then print 'Lose', otherwise print 'Win'
}

{                       # beginning of block to execute when the moves are identical:

    ;;                  # discard the latest two stack items (not needed in this case)
    §                   # display computer's move
    'Draw'              # display the text 'Draw'
}
if                      # if computer's and user's moves were NOT equal, 
                        # execute the first block.
                        # if they were, execute the second block

`                       # put the last word in quotes to separate it from computer's move

4

সি, 92 86 অক্ষর

main(y){
    srand(time(0));
    y="rps"[rand()%3];
    printf("%c%c\n",y,"LWWTLLW"[getchar()-y+3]);
}

কম্পিউটারের পছন্দ, এবং ব্যবহারকারীর দৃষ্টিকোণ থেকে ফলাফল মুদ্রণ করে - ডাব্লু = আপনি জিতেন, এল = আপনি হেরে গেছেন, টি = টাই। পছন্দগুলির ASCII মানগুলি দেওয়া
সরল সূত্রটি x-y0 টি ড্র (স্পষ্টতই) দেয় এবং একে অপরের ক্ষেত্রে একটি অনন্য মান দেয়।


4

পাইথন 2 ( 86 84 80 78), পাইথন 3 - 76 অক্ষর

0 - টাই, 1 - হেরে, 2 - জিতে

from random import*
a=raw_input()
b=choice('psr')
print(a!=b)+(b+a in'rpsr'),b

from random import*
a=input()
b=choice('psr')
print((a!=b)+(b+a in'rpsr'),b)

Ungolfed

from random import*
moves = 'psr'
inp   = raw_input()
comp  = choice(moves)
match = comp+inp
is_not_tie = inp!=comp
wins = 'r' + moves         #rpsr; rock beats scissors, scissors beats paper, paper beats rock
print is_not_tie + (match in wins), comp

কীভাবে চালাবেন: python file_name_here.py

সমস্যাগুলি:
কম্পিউটার এআই: 35 টি অক্ষর


1
নিস! Aযদিও আপনার প্রয়োজন হবে বলে আমি মনে করি না এবং আপনি এর সাথে আরও একটি চর সংরক্ষণ করতে পারেন from random import*
grc

@ জিআরসি: ধন্যবাদ, আমি চেষ্টা করিনি from random, কারণ আমি ভেবেছিলাম এটি এটিকে পরিবর্তন করে না ...
beary605

আপনি (a == b) * 2 থেকে (a! = B) পরিবর্তন করে এবং ফলাফলগুলি "0-টাই, 1-জয়, 2-হারাতে"
ধারা

দুঃখিত, বোঝানো হয়েছে "" 0-টাই, 1-হেরে, 2-জয় "
ধারা

@ ধারা: ধন্যবাদ, এটা বুঝতে পারত না। মানবিক কাজ: ওহ! আমি এটা ঠিক করব।
beary605

4

প্রথমে অন্যকে পর্যালোচনা না করে চেষ্টা করুন।

গল্ফড: 107 85 বাইট

i=prompt(),c="rps"[new Date%3],w={r:"s",p:"r",s:"p"};alert(c+(i==w[c]?2:w[i]==c?1:3))

আউটপুট হ'ল [এনপিসি-পছন্দ] [১: জয়, ২: ক্ষতি, ৩: টাই]

ungolfed:

var input = prompt(),
    choices = ["r","p","s"],
    computer_choice = choices[Math.floor(Math.random() * 3)],
    outcomes = {'r':'s','p':'r','s':'p'},
    winner;

    if( input == outcomes[computer_choice] ) {
        winner = 'NPC';
    } else if ( computer_choice == outcomes[input] ) {
        winner = 'You';
    } else {
        winner = 'No one, it was a Tie!';
    }

    alert('Computer chose: ' + computer_choice + '\n' +
          'The winner is: ' + winner);

4

পাওয়ারশেল: 144 133 117 111 92 73

মূল থেকে পরিবর্তনগুলি:

  • ড্যাঙ্কো ডুর্বিকের তিন খেলোয়াড়ের এমনকি বা বিজোড় সমাধান দেখে সম্পূর্ণ স্ক্রিপ্টটি সম্পূর্ণ পুনরায় লিখেছেন ।
  • অক্ষরের অ্যারের পরিবর্তে single গুলি একটি একক স্ট্রিংয়ে পরিবর্তন করা হয়েছে।
  • .NET শ্রেণি এবং পদ্ধতিটি বানানের পরিবর্তে সূচকগুলিকে সরাসরি পদ্ধতি হিসাবে ব্যবহার করা হয়।
  • অপ্রয়োজনীয় সরানো %3হয়েছে।

সব বলেছে, আমার আসল উত্তর থেকে প্রায় দৈর্ঘ্য কেটে ফেলুন!

গল্ফ কোড:

$p=($s='rps').IndexOf((read-host));$s[($c=Random 3)];"TWLLTWWLT"[$p+$c*3]

সরাসরি কনসোল থেকে চালানো যেতে পারে।

মতামত সহ উজ্জ্বল:

# Variable $p will store the player's selection as a ternary digit by finding its position in a string containing the possible choices.
$p=(
    # Possible choices will be stored in a variable, $s, for later reuse.
    $s='rps'
# Get the position of the player's choice from $s.
).IndexOf((read-host));

# Express the computer's choice by outputting the appropriate character from $s.
$s[(
    # Computer's choice will be stored as a ternary digit in $c.
    $c=Random 3
)];

# Outcome for the player will be chosen from a string of possible outcomes by looking up the decimal repesentation of a two-digit ternary number.
# The threes digit is represented by $c, ones digit by $p.
"TWLLTWWLT"[$p+$c*3]

# Variable cleanup - do not include in golfed code.
rv p,s,c

কিছু নমুনা কনসোলে চলে:

এখানে চিত্র বর্ণনা লিখুন


3

জাভা 259 :(

class c {public static void main(String[]a){char y=a[0].charAt(0);char m="rps".charAt(new java.util.Random().nextInt(3));if(y==m)a[0]="T";else if((y=='r'&& m=='s')||(y=='s'&& m=='p')||(y=='p'&& m=='r'))a[0]="1";else a[0]="0";System.out.println(m+":"+a[0]);}}

অত্যন্ত অবারিত কোড:

class c {
    public static void main(String[] a) {
        char y = a[0].charAt(0);
        char m = "rps".charAt(new java.util.Random().nextInt(3));
        if (y == m) {
            a[0] = "T";
        } else if ((y == 'r' && m == 's') || (y == 's' && m == 'p') || (y == 'p' && m == 'r')) {
            a[0] = "1";
        } else {
            a[0] = "0";
        }
        System.out.println(m + ":" + a[0]);
    }
}

নমুনা রান:

সি:> জাভা সিআর

S: 1

সি:> জাভা সিপি

পি: টি

সি:> জাভা সিএস

গুলি: টি


3

বেফঞ্জ: 107 টি অক্ষর

~v@,"w"<   <   <  <
v?v3.14159265@,"l"<
"""358979323846>3-|
rps26433832>:1+|
"""7950>:2+|
>>>:,-:|
28@,"t"<

খানিকটা আড়ষ্ট। এটি সঙ্কুচিত, প্রশ্ন কতটি দ্বারা হয়।


3

জাভাস্ক্রিপ্ট (87)

Golfed:

o='LDW'[2*((a=prompt())+(b='prs'[new Date%3])!='ps'&a<b|a+b=='sp')+ +(a==b)];alert(b+o)

Ungolfed:

var player = prompt(), 
    computer = 'prs'[new Date%3], // Date mod 3 "pseudo-random"
    outcome = 'LDW'[2*(player+computer != 'ps' 
                    & player < computer 
                    | player + computer == 'sp') // convert boolean W/L outcome to int (0,2)
              +
              +(player == computer)]; // convert D outcome to int (0,1)
alert(computer + outcome);

এটি চালানোর জন্য আপনি কোডটি সহজেই আপনার ব্রাউজারের জাভাস্ক্রিপ্ট কনসোলে পেস্ট করতে পারেন।

যদি কম্পিউটারের বাছাইয়ের আগে আমাকে ফলাফল মুদ্রণের অনুমতি দেওয়া হয় (83) :

alert('LDW'[2*((a=prompt())+(b='prs'[new Date%3])!='ps'&a<b|a+b=='sp')+ +(a==b)]+b)

2

কে, 67

{-1'f:x,*1?"rps";$[f in b:("pr";"rs";"sp");"W";f in|:'b;"L";"D"]}

উইন / হার / ড্রয়ের জন্য ডাব্লু, এল, ডি প্রিন্ট করুন।

Ungolfed:

rps:{[x]
    res:x,*1?"rps";        // join user input to random selection of r,p,s
    -1'f;                  // print the user input and the program selection to stdout
    wins:("pr";"rs";"sp"); // the universe of winning combinations
    losses:|:'wins;        // reverse each win to the get losses

    $[f in wins;    
        "win";
    f in losses;
        "lose";
    "draw"]
    }

বা প্রশ্নে, যা আরও পাঠযোগ্য:

rps:{[x]
    res:x,rand["rps"];        // join user input to random selection of r,p,s
    -1 each f;                // print the user input and the program selection to stdout
    wins:("pr";"rs";"sp");    // the universe of winning combinations
    losses:reverse each wins; // reverse each win to the get losses

    $[f in wins;    
        "win";
    f in losses;
        "lose";
    "draw"]
    }

নমুনা রান:

k){-1'f:x,*1?"rps";$[f in b:("pr";"rs";"sp");"W";f in|:'b;"L";"D"]}"r"
r
s
"W"
k){-1'f:x,*1?"rps";$[f in b:("pr";"rs";"sp");"W";f in|:'b;"L";"D"]}"s"
s
s
"D"
k){-1'f:x,*1?"rps";$[f in b:("pr";"rs";"sp");"W";f in|:'b;"L";"D"]}"p"
p
s
"L"

2

জাভাস্ক্রিপ্ট, 117 টি অক্ষর

সমস্যাটির জন্য ডেটা-চালিত পদ্ধতির বিষয়টি এখানে। এটি ম্যানুয়ালি ম্যাপিংয়ের পরিবর্তে ডেটা জিতে / হারাতে / আঁকতে ডেটা তৈরির মাধ্যমে অনুকূলিত হতে পারে তবে এটি একটি শুরু :)

Golfed:

alert((r=[{v:"r",r:d="D",p:w="W",s:l="L"},{v:"p",r:l,p:d,s:w},{v:"s",r:w,p:l,s:d}][Math.random()*3|0]).v+r[prompt()])

Ungolfed:

//Output the result to the user
alert(
    (
        //Store the random computer outcome data
        randomRPSData =
            //Create the data for if the computer chooses r, p, or s
            [
                {
                    value: "r",
                    r: (d = "Draw"),
                    p: (w = "Win"),
                    s: (l = "Lose")},
                {
                    value: "p",
                    r: l,
                    p: d,
                    s: w},
                {
                    value: "s",
                    r: w,
                    p: l,
                    s: d}
            ]
            //Have the computer pick a random variable
            [Math.random() * 3 | 0]

    //Output the value the computer chose
    ).value

    //Output whether the user won or not
    + r[prompt()]
);

অবশেষে, এখানে উভয়ের সাথে এক ঝাঁকুনি


1

জাভাস্ক্রিপ্ট: 256

golfed:

i=prompt(),a=['p','r','s'];a=a[Math.floor(Math.random()*(3-1+1))+1];if(i==a){alert('d');}else if(i=='p'){if(a=='s'){alert('l');}else{alert('w');}}else if(i=='r'){if(a=='s'){alert('w');}else{alert('l');}}else if(i=='s'){if(a=='r'){alert('l');}else{alert('w')}}

ungolfed:

i=prompt(),a=['p','r','s'];
a=a[Math.floor(Math.random()*(3-1+1))+1];
if(i==a){
    alert('d');
}
else if(i=='p'){
    if(a=='s'){
        alert('l');
    }else{alert('w');}
}else if(i=='r'){
    if(a=='s'){
        alert('w');
    }else{alert('l');}
}else if(i=='s'){
    if(a=='r'){
        alert('l');
    }else{alert('w')}
} 

1

Clojure:

(def r 0) (def s 1) (def p 2)
(def object-name #(get {'p "Paper", 's "Scissors", 'r "Rock"} %))
(def result-name #(get {\d "Draw", \w "Win", \l "Lose"} %))
(defn computer-choice [] (nth ['r 's 'p] (int (rand 3))))
(defn game [a b] (get "dwlldwwld" (+ (* 3 a) b) ))
(defn print-game [user comp result] (print (format
  "User: %s\nComputer: %s\nResult: %s\n" 
  (object-name user) (object-name comp) (result-name result))))
(println "Enter 'p', 's' or 'r' and press return")
(let [comp (computer-choice),  user (read)]  (print-game user comp (game (eval user) (eval comp))))

মিনি সংস্করণ (129 কোড অক্ষর):

java -jar clojure.jar -e \
"(def r 0)(def s 1)(def p 2)(let[u(read),c(nth['r 's 'p](int(rand 3)))](print c)(print (get \"dwlldwwld\"(+(* 3(eval u))(eval c)))))"

1

জাভা (387) প্রথম কোড গল্ফ!

import java.util.HashMap;public class _ {public static void main(String i[]){HashMap l = new HashMap(){{put('r',0);put('p',1);put('s',2);put(0,'T');put(1,'L');put(2,'W');}};char u =i[0].charAt(0);char c ="rps".charAt((int)(Math.random()*3)%3);int[][] m =new int[][]{{0,1,2},{2,0,1},{1,2,0}};System.out.println("U"+u+"C"+c+"R"+(Character)l.get(m[(Integer)l.get(u)][(Integer)l.get(c)]));}}

Ungolfed

import java.util.HashMap;
public class _ {
    public static void main(String[] input) {
       input = new String[] {"s"};
       HashMap lookup = new HashMap(){{
           put('r', 0);
           put('p', 1);
           put('s', 2);
           put(0, 'T');
           put(1, 'L');
           put(2, 'W');
       }};
       char user = input[0].charAt(0);
       char computer = new char[] {'r', 'p', 's'}[(int)(Math.random()*3)%3];
       int[][] matrix = new int[][] {{0,1,2}, {2,0,1}, {1,2,0}};

       Integer userChoice = (Integer) lookup.get(user);
       Integer computerChoice = (Integer) lookup.get(computer);
       Character result = (Character) lookup.get(matrix[userChoice][computerChoice]);

       System.out.println("u:" + user + ",c:" + computer + ",r:" + result);
    }
    /*
     t = 0, l = 1, w = 2
     *
        +---------------+
        | * | r | p | s |
        +---------------+
        | r | 0 | 1 | 2 |
        +---------------+
        | p | 2 | 0 | 1 |
        +---------------+
        | s | 1 | 2 | 0 |
        +---------------+
     */
}

গল্ফড (স্পেসিং / ইন্ডেন্টেশন)

import java.util.HashMap;
public class _ {
public static void main(String i[]) {
    HashMap l = new HashMap(){{
        put('r',0);put('p',1);put('s',2);put(0,'T');put(1,'L');put(2,'W');
    }};

    char u =i[0].charAt(0);char c = "rps".charAt((int)(Math.random()*3)%3);
    int[][] m =new int[][]{{0,1,2},{2,0,1},{1,2,0}};

    System.out.println("U"+u+"C"+c+"R:"+(Character)l.get(m[(Integer)l.get(u)][(Integer)l.get(c)]));
}}

সংক্ষিপ্ততম কোড নয়, তবে আমার প্রথম চেষ্টা


1
কিছু প্রয়োগ আপনি প্রয়োগ করতে পারেন: 1) import java.util.*2) HashMap l-> Map l3) 4 এর (int)পরিবর্তে কাস্ট (Integer)) new Random().nextInt(3)5) বাদ দিন new int[][]6) cast ালাই সরান (Character)7) অক্ষরের পরিবর্তে ইনস ব্যবহার করুন।
হাওয়ার্ড

1

যান (169)

গল্ফড:

package main
import("fmt";"os")
func main(){v:=map[uint8]int{114:0,112:1,115:2}
u:=os.Args[1][0]
c:="rps"[os.Getpid()%3]
fmt.Printf("%c\n%c\n",c,"TWL"[(3+v[c]-v[u])%3])}

অবহেলিত (এর দ্বারা ফরম্যাট করা go fmt):

package main

import (
    "fmt"
    "os"
)

func main() {
    v := map[uint8]int{114: 0, 112: 1, 115: 2}
    u := os.Args[1][0]
    c := "rps"[os.Getpid()%3]
    fmt.Printf("%c\n%c\n", c, "TWL"[(3+v[c]-v[u])%3])
}

চালান:

go চালান main.go p

গুলি

ওয়াট


1

পাইথ , 23

J"rps"K+wOJK%-XJ'KXJtK3

আউটপুট ফর্ম হয়:

টাই: 0 জয়: 1 হার: 2

ব্যাখ্যা:

J"rps"             J="rps"
K+wOJ              K=input()+random_choice(J)
K                  print K
  XJ'K             index of K[0] in J
      XJtK         index of K[1] in J
 -XJ'KXJtK         difference of above indexes
%-XJ'KXJtK3        above difference mod 3

নিম্নলিখিত হিসাবে চালান:

$ cat rps
J"rps"K+wOJK%-XJ'KXJtK3
s
$ cat rps | python3 pyth.py
< Extraneous debug output removed>
sp
1

আরও মাত্র চারটি অক্ষরের জন্য, আমরা টাইয়ের জন্য টি, জয়ের জন্য ডাব্লু এবং ক্ষতির জন্য এল ব্যবহার করতে পারি:

J"rps"K+wOJKr@"TWL"-XJ'KXJtK

সূচকের পার্থক্য অবধি সমস্ত কিছুই সমান হয়, যার পরে আমরা সূচক হিসাবে স্ট্রিংয়ের মধ্যে পার্থক্যটি ব্যবহার করি "TWL"


দ্রষ্টব্য: চ্যালেঞ্জ পোস্ট হওয়ার পরে আমি যখন এই ভাষার বিকাশ করেছি, তখনও আমি আজ পর্যন্ত চ্যালেঞ্জটি দেখিনি। চ্যালেঞ্জটি ভাষার কোনও দিককে প্রভাবিত করে না।


0

গ্রোভি, 89

v='rps'
r=new Random().nextInt(3)
print"${v[r]}${'TLW'[((r-v.indexOf(this.args[0]))%3)]}"

যুক্তি হিসাবে ব্যবহারকারী পছন্দ গ্রহণ করে। উদাহরণ:

groovy rps.groovy p
sL

0

সি # এবং লিনকপ্যাড 133

golfed:

char i,c,r;i=Console.ReadLine()[0];var a="prsp";c="prs"[new Random().Next(3)];r=i==c?'T':a.Contains(""+i+c)?'W':'L';(c+">"+r).Dump();

ungolfed:

        char i, c, r; // i for input / c for choosen by computer / r for result
        i = Console.ReadLine()[0]; //getting input in LinqPad
        var a = "prsp"; 
        c = "prs"[new Random().Next(3)]; // Computer choose a random string
        r = i == c ? 'T' : a.Contains("" + i + c) ? 'W' : 'L'; (c + ">" + r).Dump(); //check for win - dump for output in LinqPad

নমুনা আউটপুট (ইনপুট গুলি): r> এল // কম্পিউটার রক (আর) পছন্দ করে - তাই আমরা হেরে গেলাম


0

জাভাস্ক্রিপ্ট (79)

একটি পুরানো বাম্পিং, কিন্তু এখানে আমরা যেতে ...

যুক্ত হওয়া বোনাসের সাহায্যে আপনি যে কোনও রক পেগনেটাইট, পাইরোক্সেনাইট, স্কোরিয়া, সোভাইট, কিম্বারলাইট, ট্রন্ডজেমাইট, টফ বা অন্য কোনও পছন্দ করতে পারেন। কেবল সীমাবদ্ধতা হ'ল আপনি ব্যবহার করতে পারবেন না pবা s ;-)


ইনপুট:

r = rock      (Or , ...)
p = paper
s = scissors

আউটপুট:

[computers choice][0=Loss, 1=Win, 2=Draw]

উদাহরণ:

User  Computer  Result
r     r         r2
r     p         p0
r     s         s1

গল্ফ কোড:

u=~~{p:1,s:2}[prompt()],c=new Date%3;alert('rps'[c]+(u==c?2:!u&c>1|u&!c|u>1&c))

ব্যবহৃত প্রধান কৌশলগুলি হ'ল:

1. u = ~~{}[prompt()]

{}ব্যবহারকারীর ইনপুট দ্বারা        অবজেক্ট এবং মান পুনরুদ্ধার করা prompt()। এ পর্যন্ত সব ঠিকই. তারপরে পরিবর্তে r : 0আমরা নট অপারেটর 0ব্যবহার করে এটিকে রূপান্তর করতে বাধ্য করতে পারি ~~। এটা তোলে ঘন ঘন মেঝে নম্বরে ব্যবহার করা হয়, কিন্তু এছাড়াও আছে (সুবিধা) ফিরে না NaNযখন অন্য অপারেটরদের would, উদাহরণস্বরূপ মত: +{a:1, b:2}['c']

2. c = new Date%3

       তারিখটি প্রায়শই উদাহরণস্বরূপ দ্বারা ট্রিক করা +new Dateহয় এটি সরাসরি টাইমস্ট্যাম্পে রূপান্তর করতে ব্যবহার করে, অন্যথায় একটি স্ট্রিং প্রতিনিধিত্ব পেতে পারে। এখানে মোড ব্যবহার করে একই প্রভাব অর্জন করুন।

3. 'rps'[c]

       স্ট্রিং কম্পিউটারের পছন্দ প্রদান সূচিবদ্ধ এক্সেস 0 = r, 1 = pবা 2 = s

4. (u==c ? 2 : !u&c>1 | u&!c | u>1&c )

   IF  u == c
       Draw                    (aka 2)
   ELSE IF !u&c>1|u&!c|u>1&c 
       Win                     (aka 1)
   ELSE
       Loss                    (aka 0)
   ENDIF


...

বর্ণহীন কোডটি এরকম কিছু হতে পারে:

function rock_paper_scissors() {
    var choices = {
            r : 0,
            p : 1,
            s : 2,
        },
        tr_table = ['Rock','Paper','Scissors'],
        user, pc, result
    ;

    function get_input() {
        var input = prompt("Enter your choice `r', `p' or `s':")
                    .toLowerCase();

        if (!/^[rps]/.test(input)) {
            console.warn("Bad input. Please choose `r', `p' or `s'.");
            // return get_input();
            return null;
        }
        return input[0];
    }
    function report(c1, c2) {
        if (c1 === pc) {
            return 'Draw';
        } else if (
            (c1 === 0 && c2  >  1) ||
            (c2 === 0 && c1 === 1) ||
            (c1  >  1 && c2  >  0)
        ) {
            return 'Win';
        } else {
            return 'Loss';
        }
    }

    if ((user = get_input())) {
        user = choices[user];
        pc = Math.floor(Math.random() * 3);
        result  = 
            'Computers choice: ' + tr_table[pc] + ', ' +
            'Your choice: ' + tr_table[user] + ', ' +
            'Result=' +  report(user, pc);
        console.log(result);
    }
    return result;
}

rock_paper_scissors();

0

গল্ফস্ক্রিপ্ট - 29

এটি এই মুহূর্তে একটি সত্য উত্তর (আপনার দিকে তাকিয়ে, n"Draw"পি)।

'rps'.@\?3rand.@- 3%@@[=]''+\

Ungolfed:

'rps'3rand[=]''+.2$={\;'
T'}{.@'rspr'.@?@@(;\?='
L''
W'if=}if

আপনি এটি দিয়ে চালাতে পারেন ruby golfscript.rb MyCode.txt, MyCode.txtপ্রোগ্রাম কোডটি কোথায় ।

নমুনা রান করে (সমস্ত "ইনপুট" আর "দিয়ে থাকে তবে এটি সবকিছু দিয়ে কাজ করে) (টাই 0 হয়, জয় 2 হয়, ক্ষতি হয় 1):

ruby golfscript.rb MyCode.txt
r0
ruby golfscript.rb MyCode.txt
p2
ruby golfscript.rb MyCode.txt
s1

আপনি যদি কোনও সংস্করণের ব্যাখ্যা চান এবং / অথবা কোনও সম্ভাব্য উন্নতি দেখতে চান তবে আমাকে বলুন।


0

জাভাস্ক্রিপ্ট, 65 71 70

কম্পিউটার চয়েজ আউটপুট ছাড়াই: 65

alert('-+0+0+0'['rppssrr'.indexOf('rps'[new Date%3]+prompt())+1])

কেবলমাত্র সেই সমাধানটি পরীক্ষা করার জন্য:

for(x in {r:0,p:0,s:0})
  for(y in {r:0,p:0,s:0})
    console.log("%s %s %s", x, y, '-+0+0+0'['rppssrr'.indexOf(x+y)+1])

কম্পিউটার চয়েজ আউটপুট সহ: 71

alert((c='rps'[new Date%3])+'-+0+0+0'['rppssrr'.indexOf(c+prompt())+1])

70

alert((g='rps'[new Date%3]+prompt())+-('srps'.match(g)?-1:g[0]!=g[1]))

এবং পরীক্ষা:

for(x in {r:0,p:0,s:0})
  for(y in {r:0,p:0,s:0})
    console.log((g=x+y)+-('srps'.match(g)?-1:g[0]!=g[1]))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.