আমার ডি অ্যান্ড ডি চরিত্রের যোগ্যতার স্কোরগুলি রোল করুন


18

ডানজনস এবং ড্রাগনগুলিতে কোনও চরিত্রের সর্বাধিক গুরুত্বপূর্ণ বৈশিষ্ট্য হ'ল দক্ষতা স্কোর। ছয়টি যোগ্যতার জন্য এখানে 6 টি স্কোর স্কোর রয়েছে। ক্ষমতাগুলি হ'ল শক্তি, দক্ষতা, সংবিধান, গোয়েন্দা, প্রজ্ঞা এবং ক্যারিশমা।

কোনও চরিত্রের জন্য স্কোরগুলি নির্ধারণ করার সময়, আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করি: 4d6 রোল করুন, কোনও ক্রমে সর্বনিম্ন ড্রপ করুন। এর অর্থ হ'ল আমি 4 টি ছয় পার্শ্বযুক্ত পাশা রোল করি, সর্বনিম্ন ফলাফলকে উপেক্ষা করি এবং অন্যটি যোগ করি 3 This বার এটি করা হয়। ফলস্বরূপ নম্বরগুলি দয়া করে কোনওভাবেই ক্ষমতাগুলিকে বরাদ্দ করা হয়েছে।

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

বিভিন্ন শ্রেণীর জন্য সর্বাধিক গুরুত্বপূর্ণ দক্ষতার একটি সারণি এখানে রয়েছে:

Bard - Charisma
Cleric - Wisdom
Druid - Wisdom
Fighter - Stregth
Monk - Wisdom
Paladin - Charisma
Rogue - Dexterity
Sorcerer - Charisma
Wizard - Intelligence

চ্যালেঞ্জ: আমি আপনাকে (ইনপুট হিসাবে) আমার চরিত্রের ক্লাসের প্রথম অক্ষর দেব (বড় হাতের)। আমি চাই যে আপনি দক্ষতার স্কোরগুলি রোল করুন এবং তাদের উপরে বর্ণিত দক্ষতার জন্য নির্ধারিত করুন, এবং তারপরে সেগুলি শক্তি, দক্ষতা, সংবিধান, গোয়েন্দা, প্রজ্ঞা, ক্যারিশমা ক্রম অনুসারে আউটপুট করুন।

উদাহরণ:

Input: R
Rolls: 4316 3455 3633 5443 2341 6122
Scores: 13 14 12 13 9 10
Ordering: Highest goes to dexterity. Second goes to Constitution.
Output: 13 14 13 12 9 10
or
Output: 9 14 13 10 12 13
or etc.

আউটপুট যে কোনও বিন্যাসে দেওয়া যেতে পারে যেখানে সংখ্যাগুলি পরিষ্কারভাবে পৃথক করা হয়েছে এবং যথাযথ ক্রমে।

বাইটস মধ্যে সংক্ষিপ্ত কোড। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে।

উত্তর:


6

সিজেম, 43 41 40 বাইট

{6a4*:mr$0Zt:+}6*]$2m<"FRXWCDM"r#4e<3e\p

1 বাইট বন্ধ করে গল্ফ করার জন্য @ এসপি 3000 কে ধন্যবাদ।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

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

{             }6*                       e# Repeat 6 times:
 6a4*                                   e#   Push [6 6 6 6].
     :mr                                e#   Replace each six with a pseudo-randomly
                                        e#   generated integer in [0 ... 5].
        $                               e#   Sort the results.
         0Zt                            e#   Replace the lowest result by 3.
            :+                          e#   Add all four integers
                ]                       e# Wrap the 6 generated integers in an array.
                 $                      e# Sort.
                  2m<                   e# Rotate 2 units to the left to assign the
                                        e# second highest result to Constitution.
                     "FRXWCDM"          e# Push that string.
                              r#        e# Find the index of the input.
                                        e# The string doesn't contain B, P or S, so
                                        e# those push -1.
                                4e<     e# Truncate the index at 4. This way, C, D
                                        e# M all push 4.
                                   3e\  e# Swap the integer at that index with the
                                        e# one at index 3, i.e., the highest one.
                                      p e# Print.

6

পাইথন 3, 137 বাইট

from random import*
S=sorted
*L,c,h=S(3+sum(S(map(randrange,[6]*4))[1:])for _ in[0]*6)
L[:"FRW BPS".find(input())]+=h,
L[:2]+=c,
print(L)

যেমন পূর্ণসংখ্যার একটি তালিকা, ফলাফল [14, 9, 13, 12, 12, 13]জন্য F

ইনপুট চর থেকে অ্যাসাইনমেন্টে ম্যাপিংটি আশ্চর্যজনকভাবে দুর্দান্ত হয়েছিল। প্রথমে আমরা Lসর্বনিম্ন 4 রোলগুলি ধারণ করে শুরু করি , এর পরে আমরা সন্নিবেশ করতে চাই

  • ইনপুটটির উপর ভিত্তি করে সঠিক অবস্থানে সর্বাধিক রোল, তারপরে
  • সংবিধানের জন্য সূচক 2-এ দ্বিতীয় সর্বোচ্চ রোল।

প্রতিটি ইনপুট জন্য, আমরা সর্বোচ্চ রোলগুলির জন্য সূচকগুলি চাই:

Index    Ability          Input(s)
----------------------------------
0        Strength         F
1        Dexterity        R
2        Intelligence     W
3        Wisdom           CDM
4        Charisma         BPS

আশ্চর্যজনকভাবে, আমাদের কেবল এটির প্রয়োজন "FRW BPS".find(input()), কারণ:

  • FRW প্রত্যাশার মতো কাজ করুন, তাদের নিজ নিজ সূচকগুলি দিন,
  • CDMউপস্থিত হয় না তাই findদেয় -1, যা 4-উপাদান তালিকার জন্য সূচক 3, এবং
  • BPS যথাক্রমে ৪, ৫, give দিন, তবে আমরা উদ্বোধন করি কিনা তাতে কিছু আসে যায় না কারণ আমরা কেবলমাত্র শেষে একটি উপাদান সংযোজন করতে পারি।

1

জে, 100 97 বাইট

(0;0,b)C.^:(b>0)(0;1 2)C.\:~+/"1]1}."1/:~"1]1+?6 4$4$6[b=.('BCDFMPRSW'i.1!:1[1){5 4 4 0 4 5 1 5 3

ইনপুট নেয় STDIN


শুনেছি প্রোলোগ হিংসুক হয়ে উঠছে ...
অ্যালেক্স এ।

@AlexA। আমরা কেবল একটি বিরতি নিচ্ছি, ইতিমধ্যে আমি অন্য কিছু চেষ্টা করতে পারি ...
ফ্যাটালাইজ করা

0

সি ++ - 387 বাইট

এখানে প্রথম চেষ্টা, আরও গল্ফিং প্রয়োজন, বিশেষত কোন ক্লাসটি ব্যবহৃত হচ্ছে তা নির্ধারণে।

Golfed:

#include<cstdlib>
#include<cstdio>
#include<time.h>
int main(int c,char**v){char*o=*v,l=*v[1];int b=-1,s=-1,i=6,x=0,q=l>=67&&l<=68||l==77?4:l==70?0:l==87?3:l==82?1:5;srand(time(0));for(;i-->0;){int w=9,d=4,u=3,t;for(;d-->0;){t=rand()%6;if(t<w){u+=w<9?w:0;w=t;}else u+=t;}if(u>s){c=s;s=u;u=c;}if(s>b){c=s;s=b;b=c;}if(u>=0)o[x++]=u;}for(i=0;i<6;i++)printf("%d ",i==2?s:(i==q?b:o[--x]));}

বরং অবারিত:

#include<cstdlib>
#include<cstdio>
#include<time.h>
int main(int c,char**v)
{
    //name of program must be at least 4 chars
    char*others=*v,clas=*v[1];
    int desired = clas>=67&&clas<=68||clas==77?4:clas==70?0:clas==87?3:clas==82?1:5; //TODO:

    srand(time(0));
    int best=-1,second=-1,i=6,otherIndex=0;
    for(;i-->0;)
    {
        int lowest=9,diecount=4,sum=3;
        for(;diecount-->0;)
        {
            int loc=rand()%6;
            if (loc<lowest)
            {
                sum+=lowest<9?lowest:0;
                lowest=loc;
            }
            else
            {
                sum+=loc;
            }
        }
        if(sum>second)
        {
            c=second;second=sum;sum=c;
        }
        if(second>best)
        {
            c=second;second=best;best=c;
        }
        if(sum>=0)
        {
            others[otherIndex++]=sum;
        }
    }

    for(i=0;i<6;i++)
    {
        printf("%d ",i==2?second:(i==desired?best:others[--otherIndex]));
    }

    getchar();
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.