র্যান্ডম বগল বোর্ড উত্পন্ন করুন


16

চিঠি / স্পেসের 4x12 গ্রিড তৈরি করুন:

প্রতিটি ডাই স্পষ্টভাবে একবার উপস্থিত হওয়া উচিত, স্থান এলোমেলোভাবে চয়ন করা। অবস্থানগুলি পাশের প্রায় অভিন্ন র্যান্ডম অনুপাতের হওয়া উচিত utation প্রতিটি ডাইয়ের এলোমেলো (আবার প্রায় আনুমানিক) চেহারা প্রদর্শন করুন। 3-অক্ষরের উইন্ডোটিতে মুখটি বাম-ন্যায়সঙ্গত করুন। উদাহরণ স্বরূপ,

A  E  A  A
E  C  D  E
D  A  Qu E
E  A  H  D

আমি চাই যে ফর্ম্যাটটিতে একটি নন-র্যান্ডমাইজড বোর্ড। চলার স্থান অনুমোদিত।

গুটি:

A  A  E  E  G  N
E  L  R  T  T  Y
A  O  O  T  T  W
A  B  B  J  O  O
E  H  R  T  V  W
C  I  M  O  T  U
D  I  S  T  T  Y
E  I  O  S  S  T
D  E  L  R  V  Y
A  C  H  O  P  S
H  I  M  N  Qu U
E  E  I  N  S  U
E  E  G  H  N  W
A  F  F  K  P  S
H  L  N  N  R  Z
D  E  I  L  R  X

মজাদার ঘটনা: সেটে কেবল 1 কে আছে। অন্য কোন চিঠি মারা যায় যে একচেটিয়াভাবে ভাগ?

এটি তাই সংক্ষিপ্ত বাইকাউন্টের সাথে প্রোগ্রামটি জয়!


3
কে থাকলে সেখানে এফ থাকতে পারে না। এর অর্থ আপনি চ ... iretruck বানান করতে পারবেন না! : পি
ব্লেজার

@ ব্লাজার: হ্যাঁ, এবং আপনি চ ... জীবাণুও বানান করতে পারবেন না। : পি
রাই-

উত্তর:


5

গল্ফস্ক্রিপ্ট, 116 বাইট

যেহেতু স্কোরিং বাইটগুলিতে রয়েছে তাই আমি বুঝতে পারি যে আমরা সমাধানটিতে সমস্ত বাইট ব্যবহার করতে পারি । মুদ্রণযোগ্য এএসসিআইআই সেটটির বাইরে গিয়ে কোডটি এখানে প্রদর্শন করা আরও শক্ত করে তুলতে, পিটার টেলরের চেয়ে কিছুটা কম সমাধানের অনুমতি দেয় । মুদ্রণযোগ্য ডেটা ছাড়াই আমার কোডটি দেখতে এমন দেখাচ্ছে:

'57 BYTES OF BINARY DATA HERE'256base 26base 6/{;9.?rand}${6rand=65+.81='  u '2/=}%8/n*

এটি পিটার টেলারের সমাধানের সাথে বেশ সমান এবং আমি নির্লজ্জভাবে এর বিট ধার করাতে স্বীকার করেছি (যেমন .81=' u '2/=কৌশল), যদিও আমি মনে করি আমি আরও ভাল এলোমেলোভাবে বাড়তি চার বাইট ব্যয় করার পরেও তার বদল সামান্য ছোট করতে পেরেছি ।

স্ক্রিপ্টের শুরুতে বাইনারি স্ট্রিংয়ে অপ্রিন্টযোগ্য অক্ষর রয়েছে এবং তাই এখানে সরাসরি আটকানো যায় না। পরিবর্তে, আমি স্ক্রিপ্টটি হেক্স ডাম্প হিসাবে সরবরাহ করব:

0000000: 2701 8302 7c56 97d5 ec9c 52e3 462e 44d7  '...|V....R.F.D.
0000010: a8d2 81c9 6115 fc80 4da4 6cd3 b06f a6d8  ....a...M.l..o..
0000020: 4e7e 2029 12a9 f331 0b83 3481 de36 81e2  N~ )...1..4..6..
0000030: 41b4 534d dee8 13f7 ccfd 2732 3536 6261  A.SM......'256ba
0000040: 7365 2032 3662 6173 6520 362f 7b3b 392e  se 26base 6/{;9.
0000050: 3f72 616e 647d 247b 3672 616e 643d 3635  ?rand}${6rand=65
0000060: 2b2e 3831 3d27 2020 7520 2732 2f3d 7d25  +.81='  u '2/=}%
0000070: 382f 6e2a                                8/n*

লিনাক্স, বা xxdইউটিলিটি ইনস্টল থাকা যে কোনও সিস্টেমে , এই হেক্স ডাম্পটি পেরিয়ে আবার একটি 116-বাইট গল্ফস্ক্রিপ্ট প্রোগ্রামে পরিণত হতে পারে xxd -r

সম্পাদনা: প্রতিস্থাপিত 999randসঙ্গে 9.?randজন্য অনেক ভাল যদৃচ্ছতা। অন্তর্নিহিত আরএনজি মঞ্জুরি দেয় এমন পরিবর্তন এখন নিখুঁত কাছাকাছি হওয়া উচিত।


আহ - আমি ভুলে গিয়েছিলাম যে আপনি ম্যাপিংয়ের মাধ্যমে বাছাই করতে পারেন।
পিটার টেলর

4

পাইথন 2.7, 253 229 215 অক্ষর

from random import*
j=0
for x in map(choice,sample("AAEEGN ELRTTY AOOTTW ABBJOO EHRTVW CIMOTU DISTTY EIOSST DELRVY ACHOPS HIMNQU EEINSU EEGHNW AFFKPS HLNNRZ DEILRX".split(),16)):j+=1;print x+' u'[x=='Q']+'\n'[j%4:],

বেশিরভাগ চরিত্রগুলি কেবল নিজেরাই পাশা। আমি এটি খুব বেশি কমাতে চেষ্টা করতে খুব বেশি সময় ব্যয় করতে চাই না

ছোটখাটো সম্পাদনা: 2 অপ্রয়োজনীয় বাইট সরানো হয়েছে (অতিরিক্ত স্থান)

edit2: নীচে 229 এ

edit3: 215 এ নেমে


1
আপনি ইনডেক্সিং দিয়ে আপনার কোডটি আরও শক্ত করে তুলতে পারেন, print a+' u'[a=='Q']এবংprint'\n'[j%4:]
কিথ র্যান্ডাল

ধন্যবাদ! আমি এই দুটি কৌশলগুলি একত্রিত করে এটিকে আরও শক্ত করে তুলেছি :)
ব্লেজার

1
আমি এটিকে হত্যা না করে 218-এ নামিয়ে আনতে সক্ষম হয়েছি (আমার মনে হয়?): 1) আমদানি বিবৃতিটি পরিবর্তন করুন from random import*এবং সমস্ত সরিয়ে দিন r.। 2) স্ট্রিংয়ের বিভাজককে `` (স্পেস) এ পরিবর্তন করুন এবং str.splitএর ডিফল্ট আর্গুমেন্টের সুবিধা নিন । 3) কিছু করতে jএবং ব্যবহার থেকে মুক্তি পান '\n'[len(d)%4:]। 4) list.popএর ডিফল্ট আর্গুমেন্ট ব্যবহার করুন । 5) ... 6) লাভ!
ডিলন কাওয়ার

@ ডিসি আহ্ ধন্যবাদ! আমি অবাক হয়েছি আমি তাদের উপেক্ষা করেছি। তবে আমি অনুমান করি যে এটি কয়েক মিনিটের মধ্যে এটি লেখার জন্য আমি পেয়েছি: পি
ব্লেজার

1
আমি সামান্য মানচিত্রের কৌশল ব্যবহার করে এটি আরও 3 টি করে আরও কমিয়ে দিয়েছি, তবে j=0...+'\n'[j%4:]এটির কাজ চালিয়ে যেতে হয়েছিল
ব্লেজার

3

GolfScript ( 141 139 137 অক্ষর বাইটস)

যার মধ্যে 94 পাশের স্ট্রিংটিতে প্রসারিত হয়। চিত্রটিতে মোড়ক তৈরি করার জন্য theোকানো অপ্রয়োজনীয় নিউলাইন অন্তর্ভুক্ত নয় যাতে কোডটি স্ক্রলিং ছাড়া দেখা যায়:

'Y
ISY
XIAOOW
VYAAEEGNABBJOOEHRTVWCIMOTUEIOSSTACHOPSHIMNQUEEINSUEEGHNWAFFKPSHLNNRZ'n/'TTELRD'*
6/{[6rand=99rand\]}%${1=.81='  u '2/=}%8/n*

যদি আমার (হাত ধরে) বিশ্লেষণটি সঠিক হয় তবে পাশের ক্রম নির্বিশেষে এবং পাশ্বের মধ্যে নির্বিশেষে সরল প্রতিস্থাপনের মাধ্যমে ডেটা সঙ্কুচিত করতে যথেষ্ট দীর্ঘ এবং ঘন ঘন উভয় স্ট্রিং নেই।
পিটার টেলর

ডাইস ইন্টারলিভ করে এবং রান-লেংথ এনকোডিং ব্যবহার করে আমি টেবিলটি 96 থেকে 84 টি অক্ষর থেকে নামতে সক্ষম হয়েছি। ডিকোডিং যা পার্থক্য তৈরি করতে পারে ... এটি অজগরটির পক্ষে নিশ্চিত।
বুথবি

আপনি 30 বিটে 6 টি অক্ষর এনকোড করতে পারবেন, তারপরে 5 মুদ্রণযোগ্য অক্ষরে 16 বাইট সংরক্ষণ করতে পারবেন। তবে এগুলি উত্তোলনের জন্য আপনার কিছু শিফট / মাস্কের প্রয়োজন হবে।
ugoren

@ ইউগোরেন, ইলমারি ইতিমধ্যে এটি করেছিলেন।
পিটার টেইলর

@ পিটারটেলর, আপনি যদি বলেন যে সে করেছে, আমি আপনাকে বিশ্বাস করি (আমি কখনই গল্ফস্ক্রিপ্ট শিখতে বিরক্ত করিনি)। তবে মনে হয় তিনি 57 টি অপ্রচলিত অক্ষর ব্যবহার করছেন, আমি 80 মুদ্রণযোগ্য প্রস্তাব দিয়েছিলাম।
ugoren

2

রুবি, 201 197 অক্ষর

%W(AAEEGN ELRTTY AOOTTW ABBJOO EHRTVW CIMOTU DISTTY EIOSST DELRVY ACHOPS HIMNQU EEINSU EEGHNW AFFKPS HLNNRZ DEILRX).sample(16).map{|c|c[rand 6]}.each_slice(4){|x|puts x.join("  ").gsub(/Q ?/,"Qu")}

(এবং এটি একটি একলাইনার)

সম্পাদনা 1: .স্প্লিট এবং এক জোড়া উদ্ধৃতি এড়াতে% ডাব্লু () ব্যবহার করেছেন Used

সম্পাদনা 2: এটিকে স্পেক করা হয়েছে (প্রতিটি আউটপুট কলামের মধ্যে দুটি স্পেস)


আমি এই উত্তরটির জন্য "অনামী ব্যবহারকারী" দ্বারা একটি সম্পাদনা অনুমোদিত করেছি; আমি যে আপনার, মার্ক ছিল নিই, এবং আপনি লগ ইন করার ভুলে গেছি (গীত আপনি আউটপুট বৈশিষ্ট ঠিক হবে বলে মনে হচ্ছে না;। ব্যবহার করে। x.join(" ").gsub(/Q ?/,"Qu")। ঠিক যে তিনটি অতিরিক্ত অক্ষর খরচে)
Ilmari Karonen

(এটি joinস্ট্রিংয়ের একটি অতিরিক্ত জায়গা এবং
রেইজেক্সে

@ ইলমারিকারোনেন ধন্যবাদ, আমি কলামগুলির মধ্যে দুটি স্পেস লক্ষ্য করিনি। এটি এখন অনুমান করা উচিত।
মার্ক টমাস

2

পাওয়ারশেল, 234 টি অক্ষর

$d=(0..15|%{@{'AAEEGNELRTTYAOOTTWABBJOOEHRTVWCIMOTUDISTTYEIOSSTDELRVYACHOPSHIMNQUEEINSUEEGHNWAFFKPSHLNNRZDEILRX'[6*$_+(random)%6]=random}.GetEnumerator()}|sort Value|%{$_.Key})
0..3|%{($d[($_*4)..($_*4+3)])-join"   "-replace'Q ','Qu'}

পঠনযোগ্যতা উন্নত করার প্রয়াসে অতিরিক্ত শ্বেতস্পেসের সাথে এখানে একই কোডটি রয়েছে :-)

#########################################
# roll the 16 dice and shuffle them     #
#########################################

$d=(
        0..15 | % {
                    @{
                       'AAEEGNELRTTYAOOTTWABBJOOEHRTVWCIMOTUDISTTYEIOSSTDELRVYACHOPSHIMNQUEEINSUEEGHNWAFFKPSHLNNRZDEILRX'[6*$_+(random)%6]=random
                     }.GetEnumerator() 
                  } | sort Value | % {
                                        $_.Key
                                     }
    )

############################################
# add the 16 results to the 4 by 4 grid    #
############################################

0..3 | % {
            ($d[($_*4)..($_*4+3)]) -join "   " -replace 'Q ','Qu'
         }

আমি shuffleপাওয়ারশেলে কোনও বিল্ট ইন বৈশিষ্ট্য সম্পর্কে সচেতন নই , তাই আমি প্রতিটি ফলাফলকে কী-মান জোড়ায় পরিণত করি - পাশের ফলাফলের সমান কী এবং একটি এলোমেলো সংখ্যার সমান মান। তারপরে এটি কীগুলির আউটপুট মান দ্বারা এই জোড়গুলি বাছাইয়ের একটি ঘটনা ছিল।


সম্ভবত আপনি বর্তমান সময়ে এমএসে বাছাইয়ের মান হিসাবে শেষ সংখ্যাগুলি ব্যবহার করতে পারেন?
ব্লেজার

@ ব্লাজার - সম্ভবত, তবে "এলোমেলো" মাত্র ছয়টি অক্ষর নিয়েছে :-)
অ্যান্ড্রু শেফার্ড

0

পার্ল, 179 অক্ষর

@d=(Qu,map"$_ ",HIMNUAAEEGNELRTTYAOOTTWABBJOOEHRTVWCIMOTUDISTTYEIOSSTDELRVYACHOPSEEINSUEEGHNWAFFKPSHLNNRZDEILRX
=~/./g);print+(splice@d,6*int rand@d/6,6)[rand 6],@d%24?$":$/while@d

এখানে প্রোগ্রামটির একটি ভার্বোজ সংস্করণ রয়েছে:

my $fullset = "HIMNUAAEEGNELRTTYAOOTTWABBJOOEHRTVWCIMOTUDISTTY"
           . "EIOSSTDELRVYACHOPSEEINSUEEGHNWAFFKPSHLNNRZDEILRX";
my @dice = ("Qu");
push @dice, "$_ " for split //, $fullset;
while (@dice) {
    my @die = splice @dice, 6 * (int rand @dice / 6), 6;
    print $die[rand 6];
    print @dice % 24 ? " " : "\n";
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.