আপনি কি গল্ফ গল্ফ করতে পারেন?


53

আপনাকে এলোমেলো 18-গর্তের গল্ফ কোর্স তৈরি করতে হবে।

উদাহরণ আউটপুট:

[3 4 3 5 5 4 4 4 5 3 3 4 4 3 4 5 5 4]

নিয়মাবলী:

  • আপনার প্রোগ্রামকে অবশ্যই 18 টি গর্তের জন্য গর্ত দৈর্ঘ্যের একটি তালিকা আউটপুট করতে হবে
  • প্রতিটি গর্তের দৈর্ঘ্য 3, 4 বা 5 হতে হবে
  • পুরো কোর্সের জন্য গর্ত দৈর্ঘ্য 72 টি পর্যন্ত যোগ করতে হবে
  • আপনার প্রোগ্রামটি অবশ্যই কিছু অ-শূন্য-সম্ভাব্যতার সাথে প্রতিটি সম্ভাব্য গর্ত কনফিগারেশন তৈরি করতে সক্ষম হবে (প্রতিটি কনফিগারেশনের সম্ভাবনা সমান হওয়া উচিত নয়, তবে যদি এই সমস্যাটি হয় তবে অতিরিক্ত কুডোস দাবি করতে নির্দ্বিধায়)

3
দয়া করে নিশ্চিত করুন, 44152809 সমাধান?
শিশু-খরগোশ

1
আমিও সমাধানের সঠিক সংখ্যার বিষয়ে কৌতূহলী, তবে আমি মনে করি এটি ৪৪ মিলিয়নেরও বেশি হওয়া উচিত ... (আমি কোনও গণিতবিদ নই, তবে: | 1 (5) / 1 (3) = 306 সম্ভাবনা (17 * 18) | 2 (5) / 2 (3) = 69360 সম্ভাবনা (17 * 17 * 16 * 15) | 3 (5) / 3 (3) = 11182080 সম্ভাবনা (16 * 16 * 16 * 15 * 14 * 13) | করছে ঠিক আছে?
এনআরজিডাল্লাস

11
@ শিশু-খরগোশ: আমি 44,152,809 সমাধানগুলি বুনো শক্তি গণনার মাধ্যমে নিশ্চিত করতে পারি। এছাড়া, এটিও সরাসরি এই ভাবে হিসাব করা যেতে পারে: যেহেতু গড় ঠিক 4, এবং শুধুমাত্র সম্ভাবনা আছে 3, 4অথবা 5, সম্ভাব্য সমাধান ক্লাস আছে { no 3's or 5's, one 3 and one 5, two 3's and two 5's, ..., nine 3's and nine 5's}। এটি দ্বারা গণনা করা যেতে পারে nCr(18,0)*nCr(18,0) + nCr(18,1)*nCr(17,1) + nCr(18,2)*nCr(16,2) + ... + nCr(18,9)*nCr(9,9) = 44,152,809। এর অর্থ প্রায় 11.4%সমস্ত সংমিশ্রণের প্রায়শই বৈধ সমাধান (44,152,809 / 3^18)
মেল্লামব্যাক

2
sum(factorial(18)/factorial(x)/factorial(y)/factorial(z) for x in range(25) for y in range(25) for z in range(25) if 3*x+4*y+5*z == 72 and x+y+z == 18)দেয়44152809L
সঞ্জীব মুর্তি

উত্তর:


29

কে ( 18 17 16 অক্ষর)

মূল পদ্ধতির দিকে ফিরে আসুন, উন্নতির জন্য সিএসকে ক্রেডিট করুন।

(+/4-){3+18?3}/0

অন্যান্য পদ্ধতির (17 অক্ষর), জে সলিউশন হিসাবে একই পদ্ধতি, সিএস থেকে এইচ / টি

4+a,-a:9?2 -18?18

পুরাতন রুপ:

(72-+/){18?3+!3}/0

স্ট্যাক-ওভারফ্লোতে সংবেদনশীল না এবং স্থির পরিমাণে স্থির করে।


সিএস থেকে এইচ / টি কি?
গ্যারেথ


এই প্রোগ্রামটি আমাকে আমার কে ইন্টারপ্রেটারে একটি বাগ আবিষ্কার করতে সহায়তা করেছে - ধন্যবাদ! আমি আগে বুঝতে পারি নি যে নীলাদগুলি একক যুক্তিতে প্রয়োগ করা যেতে পারে (যা তারা উপেক্ষা করে)।
JohnE


15

জে, 20 18 17 টি অক্ষর

(?~18){4+(,-)?9#2

এটি 9 টি এলোমেলো সংখ্যা 0 বা 1 হয় এবং যুক্ত হওয়ার পূর্বে উপেক্ষিত হয় ব্যতীত পূর্ববর্তী উত্তরের মতো একইভাবে কাজ করে। এর অর্থ সেখানে -1যতগুলি 1এস রয়েছে। 4 যুক্ত করা আমাকে 3এস, 4গুলি এবং 5এসগুলির একটি তালিকা দেয় যা প্রতিবার 72 টির বেশি যোগ করে।

পূর্ববর্তী উত্তর:

({~?~@#)3+(,2-])?9#3

প্রথম 9 টি ছিদ্র এলোমেলোভাবে উত্পাদন করে ?9#3, তারপরে অনুলিপিগুলি তৈরি করে এবং সেগুলি অনুলিপি করে (,2-])(একটি 3 কে 5 এবং একটি 5 কে একটি 3 তে পরিণত করে) ফাইনালটি জেনারেট করে This এটি গ্যারান্টি দেয় যে মোটটি হবে 72 (যেহেতু প্রতি 3 টির সাথে মিলবে 5 হবে) প্রতি গর্তের গড় মোট হবে 4 এবং 4x18 = 72)। তারপরে ({~?~@#)প্রতিটি সংমিশ্রণ সম্ভব কিনা তা নিশ্চিত করার জন্য এটি এলোমেলোভাবে ফলাফলটি পরিবর্তন করে।


আসলে আপনি {3,5,4,4,4 উপার্জন করবেন না ... the আপনি পুরো ফলাফলটি রদবদল করা থেকে ভাল
ratchet freak

পছন্দ করুন আমি এখন সম্পাদনা করব।
গ্যারেথ

13

এমএস-ডস এর অধীনে 16-বিট x86 মেশিন কোড - 45 বাইট

Hexdump:

0E5F576A12595188ECE44088C3E44130D8240374F400C4AAE2EF595E80FC2475DFAC0432CD29B020CD29E2F5C3

বেস 64 কোডেড বাইনারি:

Dl9XahJZUYjs5ECIw+RBMNgkA3T0AMSq4u9ZXoD8JHXfrAQyzSmwIM0p4vXD

কিছু মন্তব্য সহ আসল উত্স কোড:

 bits 16
 org 0x100

again:
 push cs               ; Save whatever CS we get.
 pop di                ; Use CS:DI as our course buffer..
 push di               ; Save for later use in the print loop
 push 18               ; We need 18 holes for our golf course.
 pop cx                ; ch = 0, cl = 18.
 push cx               ; Save for later use.
 mov ah, ch            ; Zero out ah.
generate_course:
 in al, 0x40           ; Port 0x40 is the 8253 PIT Counter 0.
 mov bl, al            ; Save the first "random" value in bl.
 in al, 0x41           ; Port 0x41 is the 8253 PIT Counter 1.
 xor al, bl            ; Add some more pseudo randomness.
 and al, 3             ; We only need the two lower bits.
 jz generate_course    ; If zero, re-generate a value, since we need only 3, 4, 5 holes.
 add ah, al            ; Sum in ah register.
 stosb                 ; Store in the course buffer.
 loop generate_course  ; Loop for 18 holes.
 pop cx                ; cx = 18.
 pop si                ; si = course buffer.
 cmp ah, 36            ; 72 holes?
 jne again             ; No, re-generate the whole course.

print:                 ; Yup, we have a nice course.
 lodsb                 ; Load the next hole.
 add al, '2'           ; Add ASCII '2' to get '3', '4' or '5'
 int 0x29              ; Undocumented MS-DOS print function.
 mov al, ' '           ; Print a space too for better readability.
 int 0x29              ; Print the character.
 loop print            ; Print the whole course.
 ret                   ; Return to the beginning of the PSP where a INT 0x20 happen to be.

সঙ্গে কম্পাইল nasm 18h.asm -o 18h.comএবং একটি 32 বিট উইন্ডোজ সংস্করণ থেকে এমএস ডস (অথবা Dosbox), অথবা NTVDM অধীনে চালানো।

নমুনা আউটপুট:

4 5 4 5 4 5 3 4 3 4 3 4 4 5 4 3 5 3

3
ভালবাসা একত্রিতকারী ...
woliveirar

13

গণিত 71 68 66 60

টালির পরামর্শ দ্বারা 6 টি অক্ষর সংরক্ষণ করা হয়েছে।

RandomSample@RandomChoice@IntegerPartitions[72, {18}, {3, 4, 5}]

{5, 4, 3, 3, 5, 3, 5, 5, 3, 3, 3, 4, 5, 3, 5, 4, 4, 5, 3}

সমস্ত সম্ভাব্য ফলাফল সম্ভব, তবে সেগুলিও সমানভাবে সম্ভব নয়।


বিশ্লেষণ

IntegerPartitions[72, {18}, {3, 4, 5}]

3 এর 4, 5 এবং 5 এর সমন্বয়ে 18 টি উপাদানের 72 টির মধ্যে সমস্ত 10 টি সম্ভাব্য পার্টিশন (সংমিশ্রণ নয়, ক্রমান্বয়ে নয়) উত্পাদন করে।

পার্টিশন


RandomChoice এর মধ্যে একটি নির্বাচন করে।

RandomSample সেই পছন্দের ক্রম ফেরত দেয়।


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

ট্যালি, ধন্যবাদ আপনার পরামর্শ সহায়ক ছিল।
ডেভিডসি

8

আর - 41

x=0;while(sum(x)!=72)x=sample(3:5,18,T);x

# [1] 5 3 5 3 3 3 3 3 5 4 5 4 5 4 4 5 5 3

অ্যালগরিদম @ স্যাগ্রিভের মতো।


উপরের @ সিগ্রিভ হিসাবে একই সমস্যা - 18 টি গর্তে কোনও কিছুই এটিকে উপরের দিকে আটকাতে বাধা দেয় না।
gt6989b

3
এটি কোনও সমস্যা নয়, এই ক্ষেত্রে নমুনা কমান্ড সর্বদা 18 মান উত্পন্ন করে।
শেগ্রিভে

8

গল্ফস্ক্রিপ্ট (২rs টি অক্ষর)

{;0{3rand.3+@@+(}18*])}do`

ইলমারির সমাধানের সাথে কিছু সুস্পষ্ট মিল রয়েছে তবে কিছু স্পষ্ট পার্থক্যও রয়েছে। বিশেষত, আমি গড় সমান 4 হ'ল সত্যটি কাজে লাগাচ্ছি।


জঘন্য, তবে নিশ্চিত যে সেখানে লুপের অবস্থা সহ একটি চতুর কৌশল। আমি {;0{3.rand+.@+}18*])72-}doনিজের সাথে এসেছি , তবে সেখান থেকে কীভাবে এটি আরও সংক্ষিপ্ত করা যায় তা বুঝতে পারি না। +1 টি।
ইলমারি করোনেন

7

পাইথন 77

কোড

from numpy.random import*;l=[]
while sum(l)!=72:l=randint(3,6,18)
print l

আউটপুট

[3 4 4 5 3 3 3 5 4 4 5 4 5 3 4 4 5 4]

আমদানি সত্যিই এই সমাধানটিকে হত্যা করে। এটি 3 থেকে 5 এর মধ্যে 18 সংখ্যা উত্পন্ন করতে নকল ব্যবহার করে এবং তালিকাটির যোগফল 72 এর সমতুল্য হওয়া অবধি তালিকা তৈরি করে রাখে।


18 টি গর্ত তৈরির আগে প্রোগ্রামটি 72 টিতে পৌঁছতে বাধা দেয় কি? এটিকে 72 এড়িয়ে যাওয়া থেকে কী বাধা দেয়?
ডেভিডসি

3
কোডটি সর্বদা 18 টি গর্ত তৈরি করবে, তারপরে যোগফল 72 এর সমান কিনা তা পরীক্ষা করে দেখুন For উদাহরণস্বরূপ, যদি 16 টি গর্তের পরে যোগফল 72 হয় তবে এটি আরও 2 টি গর্ত তৈরি করবে, থের্বিটি যোগফলটিকে 72 এর উপরে রাখে এবং পরীক্ষায় ব্যর্থ হয়।
সাগরিভ

7

গল্ফস্ক্রিপ্ট, ২rs টি চর

{;18{3.rand+}*].{+}*72-}do`

এস্যাগ্রিভের পাইথন দ্রবণ হিসাবে একই প্রত্যাখ্যানের নমুনা পদ্ধতি ব্যবহার করে। সুতরাং, প্রতিটি বৈধ আউটপুট আসলে সমান সম্ভাবনা।


7

প্রশ্ন (25 টি অক্ষর)

আসল (২ 27)

while[72<>sum a:18?3 4 5];a

নমুনা আউটপুট

4 4 3 3 4 5 4 3 4 5 5 3 5 5 5 4 3 3

সামান্য ছোট (25)

{72<>sum x}{x:18?3 4 5}/0

7

জাভাস্ক্রিপ্ট, 66 64 61 অক্ষর

ভারীভাবে টুস্কোপসপপিগ (পিএইচপি) এবং জো তুস্কান (জেএস) দ্বারা অনুপ্রাণিত।

for(a=[s=0];s!=72;)for(s=i=0;i<18;s+=a[i++]=Math.random()*3+3|0);a

for(a=[s=0];s-72;)for(s=i=0;i<18;s+=a[i++]=Math.random()*3+3|0)a

for(a=s=[];s;)for(i=18,s=72;i;s-=a[--i]=Math.random()*3+3|0)a

2
s!=72s-72একটি চর সংরক্ষণ করতে পারে । আর শেষের সেমি-কোলন ;aঅন্য চরের জন্য প্রয়োজন হয় না।
জো তুস্কান

for(i=x;i;i--)এটি থেকে 2 টি চর সংরক্ষণ করার আগে আমি কখনই দেখিনি for(i=0;i<x;i++), ধন্যবাদ মানুষ!
ম্যাথ চিলার

7

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

from random import*
print sample(([3,5]*randint(0,9)+[4]*99)[:18],18)
সম্পাদনা:

এখানে শ্যাগ্রিভের সমাধানের মতো আরও একটি রয়েছে:

পাইথন 2, 73 বাইট + সমান সম্ভাবনা

from random import*
a=[]
while sum(a)-72:a=sample([3,4,5]*18,18)
print a

5

জাভাস্ক্রিপ্ট, 116 99 65 বাইট

for(i=0,h=[];i<18;)h[i++]=5;while(h.reduce(function(a,b){return a+b})!=72){i=Math.random()*18|0;h[i]=[3,4,4][i%3]}h;

h=[0];while(h.reduce(function(a,b){return a+b})-72)for(i=0;i<18;h[i++]=[3,4,5][Math.random()*3|0])h

while(i%18||(a=[i=s=0]),s+=a[i++]=Math.random()*3+3|0,s-72|i-18)a

1
আমি যখন এটি ক্রোম 21 এ চালাই, তখন আমি পাই i is not defined
মেল্লামব্যাক

5

পাইথন, 128 120 116 টি অক্ষর

import random,itertools
random.choice([g for g in itertools.product(*(range(3,6)for l in range(18))) if sum(g)==72])

import বিবৃতিগুলি এখনও দৈর্ঘ্য ঘাতক (23 টি অক্ষর কেবল নামস্থানে 2 ফাংশন আমদানি করতে)

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

আমি প্রতিটি কনফিগারেশনের সমান সম্ভাবনার জন্য অতিরিক্ত কুডো দাবি করি ...


4
import random,itertools
মাধ্যাকর্ষণ

আপনি ঠিক বলেছেন, কিছুটা ছোট করে দিন।
অ্যাড্রিয়েন প্লিসন

অন্যান্য টিপস: import random as r,itertools as iতারপর ব্যবহার rএবং iপরিবর্তে randomএবং itertools। এর 18*[0]পরিবর্তে range(18)এবং এর [3,4,5,6]পরিবর্তে range(3,6):) ব্যবহার করুন
অ্যালেক্স এল

আমি পাইথন 3 ব্যবহার করছি: একটি তালিকা বোধগম্যতা একটি জেনারেটর এবং এর কোনও দৈর্ঘ্য নেই, যা choice()ফাংশনটির সাথে এটির ব্যবহার নিষিদ্ধ করে ।
এটিই এই কোডটিকে

1
ওফস, দুঃখিত, আমি তালিকাগুলি এবং জেনারেটর এক্সপ্রেশনকে বিশৃঙ্খলা করলাম (আমি সাধারণত জেনারেটর এক্সপ্রেশনটির পক্ষে তালিকার বোঝাপড়াটি এটারেটরের আরও ভাল পারফরম্যান্সের কারণে এড়াতে পারি)। সুতরাং সত্য, এমনকি পাইথন 3 এ আমি এখনও কিছু অক্ষর মুছতে পারি ... @ অ্যালেক্স এটি সঠিকভাবে করেছিল।
অ্যাড্রিয়েন প্লিসন

4

পিএইচপি - 77 চর

<?while(array_sum($a)!=72){for($i=0;18>$i;){$a[++$i]=rand(3,5);}}print_r($a);

অনেকটা শ্যাগ্রিভের সমাধানের মতো, এটি 18 টি গর্তের তালিকা তৈরি করে, মোট সমষ্টিটি পরীক্ষা করে এবং হয় এটি মুদ্রণ করে বা প্রত্যাখ্যান করে এবং আবার চেষ্টা করে। অদ্ভুতভাবে যথেষ্ট, আমাদের দুটি সমাধান একই দৈর্ঘ্য।

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


1
কোঁকড়া ধনুর্বন্ধনী এখানে প্রয়োজন হয় না, এবং যোগফল হতে পারে +=<?while($s!=72)for($s=$i=0;18>$i;$s+=$a[++$i]=rand(3,5));print_r($a);
মাধ্যাকর্ষণ

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

ধন্যবাদ - তবে এটি আসলে "কোঁকড়ানো ধনুর্বন্ধনী ধনুর্বন্ধনী প্রয়োজন নেই" বলতে বোঝাতে চাইনি; আপনি এগুলি মূল while(array_sum($a)!=72)for($i=0;18>$i;)$a[++$i]=rand(3,5);
কোডেও

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

অদ্ভুত জিনিস; E_ALL এর সাথে 5.4.7 | E_STRICT কখনও নিখোঁজ হওয়া সম্পর্কে অভিযোগ করে না {}(যেহেতু পিএইচপি এর সিনট্যাক্স স্পষ্টভাবে এটির অনুমতি দেয়)।
মাধ্যাকর্ষণ

4

রুবি ১.৯ (rs২ অক্ষর)

a=Array.new(18){[3,4,5].sample}until(a||[]).inject(:+)==72
p a

রেলগুলি (55 টি চর)

ইন $ rails cREPL (যে কোন পাগল ফোল্ডারে):

a=Array.new(18){[3,4,5].sample}until(a||[]).sum==72
p a

দ্রষ্টব্য: এটি রুবি 1.8 এর সাথে কাজ করে যদি আপনি shuffle[0]পরিবর্তে ব্যবহার করেন sample


2
আপনার কি এখনও অবধি সাদা জায়গা দরকার?
কাজ

@ কাজ আপনি ঠিক বলেছেন, এটির দরকার নেই। :) 62 টি চর এখন।
js-coder

1
আপনি (1..18).map{rand(3)+3}এলোমেলোভাবে অ্যারে পেতে ব্যবহার করতে পারেন ;)
মহামারী

4

লিস্প ( 78 69 টি চর)

(কর ((সি () (ম্যাপকার (ল্যাম্বদা (এক্স)) (+ 3 (র্যান্ডম 3))) (মেক-লিস্ট 18%)))) ((= (প্রয়োগ '+ সি) 72) সি))

(do((c()(loop repeat 18 collect(+ 3(random 3)))))((=(apply'+ c)72)c))

এটি স্যাজরিভের পাইথন সমাধানের মতো।

সিআইএল হিসাবে সি দিয়ে শুরু করুন, 72২ এর সমষ্টি পরীক্ষা করুন, সি এর জন্য do"ইনক্রিমেন্ট ফাংশন" 3 থেকে 5 এর মধ্যে 18 সংখ্যার একটি তালিকা তৈরি করে, আবার 72 এর জন্য পরীক্ষা করুন, লাথার, ধুয়ে ফেলুন, পুনরাবৃত্তি করুন।

একসাথে গল্ফটি দেখতে doএবং loopসুন্দরভাবে দেখে তা সতেজ হয় ।


3

সি (123 চর) - দক্ষতার উপর প্রচেষ্টা

ডাব্লুসিসি মাধ্যমে পাইপ এবং এটি 10 ​​সেকেন্ডের মধ্যে সমস্ত 44152809 সমাধান উত্পন্ন করবে ...

char s[19];g(d,t){int i;if(d--){for(i=51,t-=3;i<54;i++,t--)if(t>=3*d&&t<=5*d)s[d]=i,g(d,t);}else puts(s);}main(){g(18,72);}

ওহ, ভাল - প্রশ্নটি সঠিকভাবে পড়েনি - তবে আমরা সমস্ত সমাধান তৈরি করে দিচ্ছি তারপর সমান সম্ভাবনার সাথে একটি এলোমেলোভাবে বাছাই করা একটি স্ক্রিপ্টিং অনুশীলন: পি


3

ক্লোজার - 55

(shuffle(mapcat #([[4 4][3 5]%](rand-int 2))(range 9)))

বেশ মজাদার কৌশল .... সমস্যাটির গাণিতিক কাঠামোটি কাজে লাগিয়েছে যে এখানে অবশ্যই 3 টি পার ছিদ্র হিসাবে 5 পার হোল থাকতে হবে।


3

পাইথন 83

import random as r;x=[]
while sum(x)!=72:x=[r.randint(3,5) for i in 18*[0]]
print x

স্যাগ্রিভের সমাধান যেমন, তবে বিন্দু ছাড়া

গল্ফিং অ্যাড্রিয়েন প্লিসনের সমাধান: 120-> 108 টি অক্ষর

import random as r,itertools as i
r.choice([g for g in i.product(*([3,4,5,6]for l in 18*[0]))if sum(g)==72])

ম্যাটল্যাব 53

x=[];
while sum(x)~=72
x=3+floor(rand(1,18)*3);
end
x

আউটপুট :

x = 4 3 4 4 4 4 5 4 4 3 4 4 3 5 3 5 4 5


নিস পদ্ধতির, কিন্তু আপনি টাইপ করে 4 বাইট সংরক্ষণ করতে পারবেন randi([3,5],1,18)পরিবর্তে3+floor(rand(1,18)*3)
brainkz

3

জাভা (rs১ টি চর)

while(s!=72)for(i=0,s=0;i<18;i++)s+=3+(int)(Math.random()*3);

নমুনা আউটপুট:

5 4 3 4 5 3 4 4 3 5 4 4 4 4 3 4 4 5

আমি কোন জাভা বিশেষজ্ঞ নই, তবে এস এবং আই এর কোনও ঘোষণা এবং সিস্টেম # প্রিন্টলনে (..) এ কোনও ধরণের কল থাকা উচিত নয়?
hiergiltdiestfu

এটি একটি কোড স্নিপেট, কোনও প্রোগ্রাম নয়। এবং এটি দেখতে অনেকটা @ জোআইবানিজের সি সংস্করণের মত দেখতে লাগে।
ফ্রাঞ্জ ডি।

2

সি (৯৯ টি চর)

int h[18],s=0,i;
while(s!=72)for(i=s=0;i<18;s+=h[i++]=rand()%3+3);
while(i)printf("%d ",h[--i]);

s=0লাইন 1 প্রয়োজন নাও হতে পারে, কারণ সম্ভাবনা কি আছে একটি uninitialized int- এ 72 সমান হবে? আমি কেবল সোজা সি-তে অবিচ্ছিন্ন মানগুলি পড়তে পছন্দ করি না। এছাড়াও এটির জন্য সম্ভবত rand()ফাংশনটির বীজ বপন করা প্রয়োজন ।

আউটপুট

3 3 3 4 5 5 3 3 4 5 5 4 3 4 5 5 5 3 

সুতরাং মূলত আপনি 18 টি সংখ্যাটির এলোমেলো স্ট্রিংয়ের মাধ্যমে লুপটি করতে চলেছেন যতক্ষণ না কেউ 72 এর সমান হয়? ভাল জিনিস দক্ষতা একটি প্রয়োজনীয় নয়।
কিথস

5
@ কিথস ন্যায্য বলতে এই প্রশ্নটির বেশিরভাগ উত্তরই তা করছে।
গ্যারেথ

2

বাশ শেল স্ক্রিপ্ট (65 টি অক্ষর)

shuf -e `for x in {0..8}
do echo $((r=RANDOM%3+3)) $((8-r))
done`

( শুফ জিএনইউ কোর্টিলস প্যাকেজ থেকে এসেছে Also এছাড়াও, গ্যারেথকে ধন্যবাদ)


2

সি # (143 অ-সাদা অংশ):

()=>{
  var n=new Math.Random().Next(10);
  Enumerable.Range(1,18)
    .Select((x,i)=>i<n?3:i>=18-n?5:4)
    .OrderBy(x=>Guid.NewGuid())
    .ForEach(Console.Write);
}

new Guid()একটি খালি জিইউডি তৈরি করে। আসলে একটি অনন্য GUID উৎপন্ন করার জন্য আপনার একটি স্ট্যাটিক পদ্ধতি ফোন করতে হবে Guid.NewGuid
রোটসর

এবং আপনার দুটি অফ-ওয়ান ত্রুটি রয়েছে (সুতরাং কথা বলার জন্য): তুলনাগুলি অন্য </ i> <i> এবং <18-n হওয়া উচিত, অন্যভাবে নয়। এবং আপনি এক্স + 1 এর পরিবর্তে এক্স -1 এর পরিবর্তে ধ্রুবক 3 এবং 5 ব্যবহার করে আকার হ্রাস করতে পারেন। এবং তারপরে আপনি এনিউমারেবলকে প্রতিস্থাপন করতে পারেন En
মুরমেগিল

সম্পাদিত; এখনও 143 টি চর
কিথস

নেই Math.Random, আছে System.Random
কোডসইনচাউস

আর একটি সি # পদ্ধতির (143 অক্ষর):var r=new Random();for(;;){var e=Enumerable.Range(1,18).Select(i=>r.Next(3,6)).ToList();if(e.Sum()==72){e.ForEach(i=>Console.Write(i));break;}}
thepirat000


2

পার্ল, 74

{@c=map{3+int rand 3}(0)x18;$s=0;$s+=$_ for@c;redo unless$s==72}print"@c"

বিকল্প সমাধান:

@q=((3,5)x($a=int rand 9),(4,4)x(9-$a));%t=map{(rand,$_)}(0..17);print"@q[@t{sort keys%t}]"

2

টিএক্সআর (99 টি চর)

@(bind g@(for((x(gen t(+ 3(rand 3))))y)(t)((pop x))(set y[x 0..18])(if(= [apply + y]72)(return y))))

এই প্রকাশটি 3 থেকে 5 পর্যন্ত এলোমেলো সংখ্যার একটি অসীম অলস তালিকা তৈরি করে:

(gen t (+ 3(rand 3)))  ;; t means true: while t is true, generate.

বাকী যুক্তি একটি সরল লুপ যা এই তালিকার প্রথম 18 টি উপাদান 72 টি যোগ করে কিনা তা যাচাই করে If যদি না হয় তবে এটি একটি উপাদানকে পপ করে আবার চেষ্টা করে। forলুপ একটি অন্তর্নিহিত নামক ব্লক ধারণ করে nilএবং তাই (return ...)লুপ বিনষ্ট এবং রিটার্ন মান ব্যবহার করা যাবে।

নোট করুন যে 99 টি অক্ষরের দৈর্ঘ্যে একটি সমাপ্ত নিউলাইন অন্তর্ভুক্ত রয়েছে, যা প্রয়োজনীয়।


আমি একটি প্রতিশ্রুতি রেখেছি যা (টি) () দ্বারা প্রতিস্থাপনের অনুমতি দেয়। :)
কাজ

2

এপিএল 12

4+{⍵,-⍵}?9⍴2

নোট করুন যে আমার সূচকের উত্স 0 তে সেট হয়েছে, যার অর্থ অ্যারে 0 থেকে শুরু হয় আপনি এটি দিয়ে সেট করতে পারেন ⎕IO←0


প্রশ্নটি এমন একটি প্রোগ্রামকে জিজ্ঞাসা করে যা প্রতিটি সম্ভাব্য কনফিগারেশন তৈরি করতে পারে। আপনার সিমমেট্রিকগুলি উত্পাদন করতে পারে। আপনি উদাহরণস্বরূপ 555455555333333343 উত্পাদন করতে পারবেন না, কমপক্ষে এটি আমার কাছেও তাই মনে হচ্ছে।
মরিস জুকা

2

আর, 42 বাইট

a=0;while(sum(a)-72)a=sample(3:5,18,r=T);a

sampleডিফল্ট হিসাবে, সম্ভাব্য মানগুলির মধ্যে সমানভাবে অঙ্কিত হয় (এখানে 3 4 5)। r=Tদাঁড়ানো replace=TRUEএবং প্রতিস্থাপনের সাথে নমুনা অনুমতি দেয়।


2

সিজেম, 17 14 বাইট

সিজেএম এই চ্যালেঞ্জের চেয়ে নতুন, তবে এটি যাইহোক সংক্ষিপ্ত উত্তর নয়, সুতরাং এটি আসলেই গুরুত্বপূর্ণ নয়।

Z5]Amr*I4e]mrp

এটি এখানে পরীক্ষা করুন।

মোট 72 টি বজায় রাখার জন্য প্রত্যেককে 3অবশ্যই যুক্ত করতে হবে 5। সুতরাং এটি এখানে কাজ করে:

Z5]            e# Push [3 5].
   Amr         e# Get a random number between 0 and 9.
      *        e# Repeat the [3 5] array that many times.
       I4e]    e# Pad the array to size 18 with 4s.
           mr  e# Shuffle the array.
             p e# Print it.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.