অসম্ভব ডার্টস স্কোর


39

আমি ডার্টস চেকআউটগুলিতে একটি দুর্দান্ত প্রশ্ন থাকলেও এটি ইতিমধ্যে জিজ্ঞাসা না করে অবাক হয়েছিলাম: ডার্টস কোডগোলফের সাথে দেখা করে

আপনার চ্যালেঞ্জ হ'ল 'এন' ডার্টগুলির সর্বোচ্চ স্কোরের নীচে 'এন' ডার্টগুলির সাথে কোন স্কোরগুলি সম্ভব নয় তা গণনা করা to যেমন এন = 3 এর জন্য সর্বাধিক সম্ভাব্য স্কোর 180 তাই আপনি ফিরে আসতে পারবেন [163,166,169,172,173,175,176,178,179]

খালি হাড়ের নিয়মের সারাংশের জন্য:

একটি একক ডার্টের পক্ষে সম্ভাব্য স্কোরগুলি হ'ল:

  • 0 (মিস)
  • 1-20, 25, 50
  • ডাবল বা 1-20 এর ট্রিপল

নিয়মাবলী:

  • স্ট্যান্ডার্ড কোড গল্ফ বিধি প্রয়োগ
  • আপনার ভাষাটি যেভাবেই অনুমতি দেয় সে ক্ষেত্রে আপনাকে অবশ্যই একটি একক প্যারামিটার নিতে হবে এবং সর্বাধিক স্কোরের নীচে সমস্ত অনন্য স্কোরের একটি তালিকা / অ্যারে ফিরিয়ে দিতে হবে যা এন ডার্ট দিয়ে স্কোর করা যায় না। আপনি এই মানগুলি কনসোলেও মুদ্রণ করতে পারেন।
  • ফলাফলের ক্রম গুরুত্বহীন
  • বাইটস মধ্যে সংক্ষিপ্ত কোড

1
বিন্যাসের জন্য, ফোনে লেখার জন্য ক্ষমা চাইছি!
বেরিটিপল

কিছুটা সম্পর্কিত ; আমি মনে করি একটি পরিসীমা থেকে অনুপস্থিত মানগুলি খুঁজে পাওয়ার বিষয়ে অন্য একটি ছিল তবে আমি এটি খুঁজে পাচ্ছি বলে মনে হয় না।
জিউসেপ

1
ক্ষমা চেয়ে নিচ্ছি, আমি 3 টি ডার্টের প্রাথমিক প্রশ্নের উত্তর থেকে সেই আউটপুটগুলি টেনেছি তবে যাচাই করিনি! আমি প্রশ্ন আপডেট করব!
বেরিটিপল

2
কোন উদ্বেগ নেই :-) আমার ভাল লাগছে!
জিউসেপ

উত্তর:


32

পাইথন 3 , 80 79 59 57 বাইট

-1 বাইট
আরনাউল্ড -২০ বাইটকে ধন্যবাদ আরবো -২ বাইটকে নেতিবাচক সাতকে
ধন্যবাদ

lambda x:[-i-~x*60for i in(x<2)*b'a[YUSOLI'+b'MJGDCA@>=']

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


26
আমি, ভুল, কি ?!
বেরিপোল

2
@ বিয়ারটিপল ২ য় ডার্টের পরে সংখ্যার উপর একটি প্যাটার্ন রয়েছে (ভাল, এটি 1 ম ডার্টেও রয়েছে, তবে আরও একটি সংখ্যা রয়েছে), এটি এই প্যাটার্নের ভিত্তিতে সংখ্যা গণনা করে।
রড

4
আহ, ভাল খেলেছে, ভাল খেলেছে
বেরিটিপল

8
@ এরিকথ আউটগলফার আপনি যদি সংকোচন করছেন তবে আপনি সমস্ত কিছু সংকুচিতও করতে পারেন;) 59 বাইটস
আরবো

2
@ নেগেটিভসিভেন আমাকে thing০ টিতে মারধর করেছেন, সেটাই চেষ্টা করে যাচ্ছিলেন: বাইটস্ট্রিংগুলি আলাদা করে রাখার পক্ষে ভাল ফলাফল যদিও সে সম্পর্কে ভাবেননি।
আরবো


9

জাভাস্ক্রিপ্ট (ES6),  55  54 বাইট

1 শাটগি ধন্যবাদ 1 বাইট সংরক্ষণ করা

রড ব্যবহৃত প্যাটার্নের ভিত্তিতে ।

n=>[...1121213+[n-1?33:2121242426]].map(x=>n-=x,n*=60)

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


1
s=60*n-> n*=60একটি বাইট সংরক্ষণ করুন।
শেগি

@ শেগি ধন্যবাদ :) আমি আমার প্রাথমিক (অপ্রকাশিত) সংস্করণটির কারণে এটিটি মিস করেছি যেখানে পরে ব্যবহার করা হয়েছিল। n
আর্নল্ড

9

পার্ল 6 , 39 বাইট (37 টি অক্ষর)

এটি অবশ্যই একটি বৃহত্তর স্লেজহ্যামার ব্যবহার করছে তবে এটি কার্যকর। (এটি কেবল নিষ্ঠুরভাবে জোর করে না, নৃশংসভাবে নৃশংসভাবে তা জোর করে)

{^60*$_∖[X+] (|(^21 X*^4),25,50)xx$_}

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

এর ব্যাখ্যা এখানে দেওয়া হল:

{                                   } anonymous block for the 
                                       set difference of
 ^60*$_                                   - 0 .. max score (60 * throwcount)
        [X+]                    xx$_      - the cross addition (throwcount times) of 
             (                 )              all possible score values, being 
              |(    X*  )                       flattened cross multiplication of
                ^21   ^4                          0..20 and 0..3 (for double and triple)
                         ,25,50                 and 25 and 50

X* ^4ক্রস গুণক ডুপ্লিকেট মান অনেকটা উত্পন্ন (সেখানে 20+ জড়িত zeros এবং যে হতে হবে সামনে ক্রস উপরন্তু করছেন), কিন্তু যেহেতু আমরা সেট পার্থক্য ব্যবহার করে এমন যেকোনো সমস্যার সৃষ্টি করে না যা অনন্য মান সঙ্গে কাজ করে।

এটি বর্তমানে ব্যর্থ হয়েছে $n == 1(যা একটি খালি সেট ফেরত দেবে) তবে এখানে একটি সমস্যা দায়ের করা হয়েছে এবং সম্ভবত ভবিষ্যতের সংস্করণগুলিতে কাজ করবে। জোকিংয়ের সংস্করণ কিছুটা লম্বা লম্বা, তবে $n == 1বর্তমান রাকুডোতে কাজ করে।


1
বাহ, অদ্ভুত ... আমার অতিরিক্ত বাইটগুলি হল n = 1 ইস্যুটি ঠিক করা (যদিও আপনি -1 এর জন্য $ instead n এর পরিবর্তে use _ ব্যবহার করতে পারেন)
জো কিং

1
@ জোকিং হা, আমি মনে করি না যে দু'জন লোক কার্যত একই উত্তর পেয়েছে (বিশেষত যেহেতু আপনার বর্তমান সংস্করণে আমার যে কাজ করে যা বর্তমানে তাত্ত্বিকভাবে কাজ করে) তাতে আমার কোন অংশে মোট ব্রেইনফার্ট
ইউজার0721090601


8

এমএটিএল , 25 23 বাইট

@ জিউস্প্পকে ধন্যবাদ , যিনি একটি ভুল স্থির করেছেন এবং 2 বাইট গল্ফ করেছেন!

25tE3:!21:q*vZ^!stP:wX-

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

ব্যাখ্যা

নিষ্ঠুর শক্তি পদ্ধতির।

25      % Push 25
tE      % Duplicate, double: gives 50
3:!     % Push column vector [1;2;3]
21:q    % Push row vector [0 1 ... 20]
*       % Multiply with broadcast. Gives a matrix with all products
v       % Concatenate everything into a column vector
Z^      % Implicit input: n. Cartesian power with exponent n
!s      % Sum of each row
tP      % Duplicate, flip: The first entry is now 60*n
:       % Push row vector [1 2 ... 60*n]
w       % Swap
X-      % Set difference. Implicit display

আপনার সংস্করণটি কাজ করে না n=2, তাই আমি এটি ঠিক করেছি এবং বুট করার জন্য একটি বাইট গল্ফ করলাম! এটি অনলাইন চেষ্টা করুন!
জিউসেপ

ওহ, জিনিসগুলি পুনর্বিন্যাস করে আরেকটি বাইট খুঁজে পেয়েছেন :-) 23 বাইটস
জিউসেপ

@ জিউসেপ আরে, আপনাকে অনেক ধন্যবাদ!
লুইস মেন্ডো

7

জে , 48 45 বাইট

2&>(35 44,q:626b66jh)&,60&*-1 4 8 14,q:@13090

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

-3 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য

একটি নিষ্ঠুর শক্তি সমাধানের চেষ্টা করা হয়েছিল, তবে রডের ধারণার এই অনুবাদকে পরাস্ত করতে সক্ষম হয় নি।


tyvm সর্বদা হিসাবে, @ ফ্রাউনফ্রোগ
জোনা

আরও খাটো626b66jh
ফ্রাউনফ্রগ

কোন বেসটি ব্যবহার করা হচ্ছে এবং জে কীভাবে এটি ব্যবহার করতে জানেন?
ইউনুস


আহ, টাই আমি ভুলেই গিয়েছিলাম b"বিভেদক" ছিল এবং নম্বর অংশ হিসেবে এটা পড়া ছিল ....
ইউনুস

6

আর , 64 বাইট

function(n,`!`=utf8ToInt)c(60*n-!"",(!"#%),/")[n<2])

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

রডের দ্বারা পাওয়া আশ্চর্যজনক উত্তরটি বন্দর করে ।

আর , 85 73 68 বাইট

function(n)setdiff(0:(60*n),combn(rep(c(0:20%o%1:3,25,50),n),n,sum))

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

ব্রুট ফোর্স দিয়ে সমস্ত সম্ভাব্য স্কোর তৈরি করে n, তারপরে যথাযথ সেট পার্থক্য নেয়।

আমাকে মনে করিয়ে দেওয়ার জন্য অরেঞ্জেরিজের অক্টাভ সমাধানটিতে ক্রেডিট combn

রবিন রাইডার ব্যবহারের পরামর্শের জন্য আরও 5 টি বাইট ধন্যবাদ %o%


এ সম্পর্কে খুব দুঃখিত, আমার উদাহরণটি দ্বিগুণ করা উচিত ছিল!
বেরিটিপল

1
FUNযুক্তি দিয়ে সুন্দর ব্যবহার combn! আপনি পেতে পারেন 68 বাইট সঙ্গে %o%পরিবর্তে x*3,x*2
রবিন রাইডার

পুনঃটুইট এমনকি অষ্টভের উত্তরে সম্প্রচারিত গুণটি কীভাবে করব তা জানার চেষ্টা করেছি!
জিউসেপ


3

পাইথ , 22 বাইট

-S*60Q+M^+yB25*M*U4U21

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

টিআইওতে টাইমস আউট 3 এর বেশি ইনপুটগুলির জন্য।

-S*60Q+M^+yB25*M*U4U21Q   Implicit: Q=eval(input())
                          Trailing Q inferred
                 U4       Range [0-3]
                   U21    Range [0-20]
                *         Cartesian product of the two previous results
              *M          Product of each
          yB25            [25, 50]
         +                Concatenate
        ^             Q   Cartesian product of the above with itself Q times
      +M                  Sum each
                            The result is all the possible results from Q darts, with repeats
  *60Q                    60 * Q
 S                        Range from 1 to the above, inclusive
-                         Setwise difference between the above and the possible results list
                          Implicit print

সংক্ষিপ্ত নয়, তবে আপনি যদি পারফরম্যান্সে পরিবর্তন U4করেন S3তবে কিছুটা উন্নতি হয় কারণ উভয় কার্তেসিয়ান পণ্যই সেই সমস্ত অতিরিক্ত বেহুদা 0s এর সাথে ডিল করতে হয় না। সেক্ষেত্রে 30 ডলারের পরিবর্তে 13 সেকেন্ডের মধ্যে 3 আউটপুটগুলি ইনপুট দিন (যদিও ইনপুট 4 এখনও সময়সাপেক্ষে বেরিয়ে গেছে, এবং এটি কোড গল্ফ, তাই এতো কিছু যায় আসে না; পি)।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন খুব ভাল বিষয়, আমি বিবেচনা করি নি যে কার্টেসিয়ান পণ্যের উভয় পক্ষের মধ্যে আমি 0 অন্তর্ভুক্ত করছি। আমি সম্পাদনা করার জন্য আরও কোনও গল্ফ বা কারণ খুঁজে পেলে আমি অবশ্যই তা অন্তর্ভুক্ত করে নেব, ধন্যবাদ!
সোক

এটা খুব খারাপ, সেখানে একটি 0 ভিত্তিক Pyth মধ্যে সমেত পরিসীমা builtin নয় .. আমি এই চেষ্টা -S*60QsM^*MP*S3aU21 25, কিন্তু মধ্যে যে স্থান 21এবং 25একটি বিট বিরক্তিকর .. 0 ভিত্তিক সমেত পরিসীমা সঙ্গে yTপরিবর্তে ব্যবহার করা যেতে পারে 21ভালো ধরণ: -S*60QsM^*MP*S3a}ZyT25( তবে তারপরে Zঅবশ্যই }0-ভিত্তিক অন্তর্ভুক্তিক ব্যাপ্তির পরিবর্তে) 25তালিকার সাথে যুক্ত করার বিকল্প বিকল্পটিতে এবং আপনি 75প্রথম কার্তেসিয়ান পণ্যটির পরে অপসারণের বিকল্পটিতে গল্ফকে কিছু দেখতে পাচ্ছেন ?
কেভিন ক্রুইজসেন


2

পাইথন 2 , 125 বাইট

lambda n:set(range(60*n))-set(map(sum,product(sum([range(0,21*j,j)for j in 1,2,3],[25,50]),repeat=n)))
from itertools import*

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


পাইথন 3 , 126 125 122 বাইট

lambda n:{*range(60*n)}-{*map(sum,product(sum([[i,i*2,i*3]for i in range(21)],[25,50]),repeat=n))} 
from itertools import*

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

-৩ বাইট, রডকে ধন্যবাদ


@ আরড ধন্যবাদ, :)
টিফিল্ড

2

05 এ বি 1 ই , 21 20 18 বাইট

20Ý25ª3Lδ*˜¨ãOZÝsK

-3 বাইটস @ গ্রিমিকে ধন্যবাদ ।

টাইমস আউট চমত্কারভাবে কার্টেসিয়ান পণ্যগুলি অন্তর্নির্মিত হওয়ার কারণে ইনপুটটি তত বেশি ã

এটি অনলাইনে চেষ্টা করুন বা আরও কয়েকটি পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

20Ý                 # Push a list in the range [0, 20]
   25ª              # Append 25 to this list
      3L            # Push a list [1,2,3]
        δ*          # Multiply the top two lists double-vectorized:
                    #  [[0,0,0],[1,2,3],[2,4,6],[3,6,9],...,[20,40,60],[25,50,75]]
          ˜         # Flatten this list: [0,0,0,1,2,...,40,60,25,50,75]
           ¨        # Remove the last value (the 75)
            ã       # Create all possible combinations of the (implicit) input size,
                    # by using the cartesian power
             O      # Sum each inner list of input amount of values together
              Z     # Get the maximum (without popping the list), which is 60*input
               Ý    # Create a list in the range [0, 60*input]
                s   # Swap so the initially created list is at the top of the stack again
                 K  # And remove them all from the [0, 60*input] ranged list
                    # (then output the result implicitly)

সেই নোটে, সর্বাধিক 60 * input, 180 নয়
গ্রিমি

@ গ্রিমি হ্যাঁ, আমার বোকামি উপেক্ষা করুন .. আমি পরীক্ষার স্যুটটিতে ভুল ফলটি দেখেছি, তবে অবশ্যই আমি নিজেই একটি ভুল করেছি। কাজের দিন দীর্ঘদিন পরে সন্ধ্যায় আমার কোডগোল্ফ করা উচিত নয়>>>
কেভিন ক্রুইজসেন


1

ম্যাথগল্ফ , 26 বাইট

╟*rJrN▐3╒*mÅ~*╡ak.ε*mÉa─Σ-

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

-২ বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

ব্যাখ্যা

╟*r                          push [0, ..., 60*input-1]
   Jr                        push [0, ..., 20]
     N▐                      append 25 to the end of the list
       3╒                    push [1, 2, 3]
         *                   cartesian product
          mÅ                 explicit map
            ~                evaluate string, dump array, negate integer
             *               pop a, b : push(a*b)
              ╡              discard from right of string/array
               a             wrap in array
                k            push input to TOS
                 .           pop a, b : push(b*a) (repeats inner array input times)
                  ε*          reduce list with multiplication (cartesian power)
                    mÉ       explicit map with 3 operators
                      a      wrap in array (needed to handle n=1)
                       ─     flatten array
                        Σ    sum(list), digit sum(int)
                         -   remove possible scores from [0, 60*input-1]

-২ বাইট এ পরিবর্তন 3╒*mÅ~*N_∞α+করে N▐3╒*mÅ~*╡। (পিএস: আপনি কেন আপনার ব্যাখ্যা শিরোনামে " ইনপুট 3 " উল্লেখ করেন ?)
কেভিন ক্রুইজসেন

খুব ভাল কাজ, আমি আমার ল্যাপটপে ফিরে এলে আমি এটি পরিবর্তন করব! আমি উত্তরটি লিখতে শুরু করার সাথে সাথে আমার একটি 31-বাইটার ছিল, যা আরও জটিল ছিল, তাই আমি একটি বিশদ বিবরণ যোগ করতে চেয়েছিলাম, তবে তারপরে আমি পোস্টটিতে সমাধানটি পেয়েছি
ম্যাক্সবি

1

ওল্ফ্রাম ভাষা (গণিত) , 69 বাইট

Complement[Range[60#],Tr/@{Array[1##&,{4,21},0,##&],25,50}~Tuples~#]&

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

লিটারোসিয়াস্টের উত্তর ভিত্তিক ।

Arrayএর তৃতীয় যুক্তি অফসেটটি নির্দিষ্ট করে (ডিফল্ট 1), এবং এর চতুর্থ আর্গুমেন্টটি মাথাটি পরিবর্তে ব্যবহারের জন্য নির্দিষ্ট করে List##&সমতূল্য Sequence, তাই Array[1##&,{4,21},0,##&]ফেরৎ একটি (চ্যাপ্টা) Sequenceবাইরের পণ্য সদস্যদের ধারণকারী 0..3এবং 0..20


0

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

I⁺E…wvtsqpmjgkhea_[YS⎇⊖θ⁹¦¹⁷℅ι×⁶⁰⁻θ²

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। @ রডের অ্যালগরিদম ব্যবহার করে; নিষ্ঠুর শক্তি 60 বাইট নিতে হবে। ইনপুটটি 1 এর চেয়ে বেশি হলে স্ট্রিংটি 9 টি অক্ষরে ছিন্ন করে কাজ করে, তারপরে অক্ষরের অর্ডিনালগুলি গ্রহণ করে এবং 60 এর যথাযথ একাধিক যোগ করে।


0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 305 বাইট

(a,b)=>(int)Math.Pow(a,b);f=n=>{var l=new List<int>(new int[21].SelectMany((_,x)=>new[]{x,x*2,x*3})){25,50};int a=l.Count,b,c,d,e=P(a,n),f;var r=new int[e];for(b=e;b>0;b--)for(c=0;c<n;c++){d=b;while(d>P(a,c+1))d-=P(a,c+1);f=(d/P(a,c))-1;r[b-1]+=l[f>0?f:0];}return Enumerable.Range(0,l.Max()*n).Except(r);}

ওয়েল, সি # তে সমস্ত সম্ভাব্য সংমিশ্রণ গণনা করার সহজ উপায় বলে মনে হচ্ছে না, তাই কোনও কোডের এই বিপর্যয়ই আমি সামনে আসতে পেরেছি।

এছাড়াও এটি সম্পূর্ণ করতে 30s সময় লাগে ...

আরও ভাল সমাধান দেখতে পছন্দ করবেন।

P=(a,b)=>(int)Math.Pow(a,b);
F=n=>
{
    var l=new List<int>(new int[21].SelectMany((_,x)=>new[]{x,x*2,x*3})){25,50};
    int a=l.Count,b,c,d,e=P(a,n),f;
    var r=new int[e];
    for(b=e;b>0;b--)
        for(c=0;c<n;c++)
        {
            d=b;
            while(d>P(a,c+1))
                d-=P(a,c+1);
            f=(d/P(a,c))-1;
            r[b-1]+=l[f>0?f:0];
        }
    return Enumerable.Range(0,l.Max()*n).Except(r);
}

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


দেখে মনে হচ্ছে আপনি নিজের বাস্তব গল্ফ উত্তর পোস্ট করতে ভুলে গেছেন। সাধারণত লোকেরা এটির নিবন্ধিত ফর্মটি গল্ফযুক্তের নীচে রাখে।
ভেসকা

@ ওয়েসকাহ ভাল, আমি সাধারণত গল্ফ করা পোস্টটি বোধগম্য হলে পোস্ট করি, তবে যেহেতু এটি অনেকটা দীর্ঘ ছিল তাই আমি এটি করার কোনও কারণ দেখিনি কারণ এটি যাইহোক টিও লিঙ্কে পাওয়া যায়, তবে আমার ধারণা আপনি তবুও ঠিক আছেন
ইনাত 3


0

পার্ল 5 -n , 96 93 91 বাইট

$"=',';@b=map{$_,$_*2,$_*3,25,50}0..20;map$r[eval]=1,glob"+{@b}"x$_;map$r[$_]||say,0..$_*60

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

এটি রান টাইমের পরিবর্তে কোড দৈর্ঘ্যের জন্য অনুকূলিত হয়েছিল, সুতরাং এটি ধীর ধরণের। এটি তার লুকের হ্যাশের জন্য প্রচুর রিলান্ডান্ট এন্ট্রি জেনারেট করে। চলমান @bমাধ্যমে অ্যারে uniqদ্রুত সম্পন্ন করা এটা ব্যাপকভাবে কিন্তু আরও 5 বাইট খরচ, তাই আমি এটা না।


0

ওল্ফ্রাম ভাষা (গণিত) , ৮১ বাইট a

Complement[Range[60#-1],Total/@Tuples[Flatten[{Array[Times,{3,20}],0,25,50}],#]]&

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

গাণিতিকের কয়েকটি সম্পর্কিত বিল্টিন রয়েছে FrobeniusSolveএবং এর সীমাবদ্ধ ফর্ম রয়েছে IntegerPartitionsতবে এগুলির কোনওটিই নিষ্ঠুর বলয়ের চেয়ে কম নয়।


এটি ভুল - এটি ফিরে {163,166,169,172,173,175,176,178,179}
আসা

1
@ মতিনাত স্থির
lirtosiast


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