নয় স্তরের শব্দ অনুমান করার গেমটি তৈরি করুন


11

অধিকার:

আপনার পক্ষে সম্ভব নয় এমন কয়েকটি অক্ষরে (আপনার পছন্দের ভাষাতে) একটি নয় স্তরের শব্দ অনুমান করার গেম সরবরাহ করতে হবে।

মেট্রিক্স:

  • একটি শব্দ-তালিকা সরবরাহ করুন (প্রতি লাইনে প্রতি একটি শব্দ, একটি নতুন লাইনের দ্বারা পৃথক পৃথক) (যেমন /usr/share/dict/wordsবা অনুরূপ করতে পারে)। কোনও ফাইলের নাম বা ওয়ার্ডলিস্টটি নিজের সমাধানে ফেলে দেওয়া ভাল।
  • শব্দের দৈর্ঘ্য বাড়ানোর জন্য 9 স্তর সরবরাহ করুন (4 টি বর্ণের ->12 টি অক্ষরের শব্দ )
স্তর 1: শব্দ তালিকা থেকে 4 টি অক্ষরযুক্ত একটি এলোমেলো শব্দ
স্তর 2: 5 টি অক্ষর সম্বলিত শব্দ তালিকার একটি এলোমেলো শব্দ
... ...
স্তর 8: 11 টি অক্ষরযুক্ত ওয়ার্ডলিস্ট থেকে একটি এলোমেলো শব্দ
স্তর 9: 12 অক্ষর সমন্বিত শব্দ তালিকার একটি এলোমেলো শব্দ
  • প্রতিটি স্তরে, তালিকা থেকে এলোমেলোভাবে নির্বাচিত শব্দটি নিখুঁত করুন (অবশ্যই একটি নির্দিষ্ট শব্দ দৈর্ঘ্যের সাথে) এবং তারকাচিহ্ন দ্বারা নির্দিষ্ট সংখ্যক অক্ষর প্রতিস্থাপন করুন ( *)। সংখ্যা অক্ষরের প্রতিস্থাপন: current_word_length / 3(বৃত্তাকার নিচে)। এলোমেলো যা অক্ষর প্রতিস্থাপন।
  • খেলোয়াড়টি শব্দটি অনুমান করতে দিন ( tryপ্রতিটি স্তর অনুযায়ী মাত্র একটি ), প্রতিক্রিয়া জানাতে ( correctবা wrong) এবং সেই অনুযায়ী পয়েন্ট দেয়। সঠিক হয়ে গেলে প্লেয়ার লাভ করে number_of_obfuscated_characters * 10 points
  • প্রতিটি স্তরের শেষে বর্তমান স্কোর মুদ্রণ করুন।

ফর্ম্যাট (& নমুনা I / O):

আপনি নিম্নলিখিত ফর্ম্যাটিং স্কিমটি অনুসরণ করেছেন তা নিশ্চিত করুন:

স্তর 1 # স্তরের শিরোনাম
======= # 
g * ek # অপ্রচলিত শব্দ
geek # ব্যবহারকারী ইনপুট
সঠিক # অনুমানের বৈধতা
স্কোর: 10 # মুদ্রণ স্কোর
            #  
স্তর 2
=======
ঠ * nux
লিনাক্স
ঠিক
স্কোর: 20

স্তর 3
=======
দৌড়ে ** মি
এলোমেলো
ঠিক
স্কোর: 40

...

স্তর 9
=======
Sem *** আইন * ve
semiinactive
ভুল
স্কোর: 90

বিজয়ী:

সংক্ষিপ্ত সমাধান (কোড অক্ষর গণনা দ্বারা)। মজা গল্ফিং আছে!


বিটিডাব্লু, সেটের ** সেম এর সমাধান কী ?
জো জেড।

@JoeZ। হতে পারে sem***act*ve==>semelfactive
দেব-মসিহ

উত্তর:


5

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

@w=<>;for$n(4..12){@x=grep/^.{$n}$/,@w;$_=$w=$x[rand@x];vec($_,rand$n,8)=42while($==$n/3)>y/*//;print"Level @{[$n-3]}
=======
$_";say<>eq$w?($@+=$=)&& correct:wrong,"
score: $@0
"}

রুবি পার্লকে মারছেন? তা করবে না! :-)

Jsvnm এর রুবি সমাধানের মতো তবে জোয়েল বার্গারের পার্ল কোডের বিপরীতে, এই স্ক্রিপ্টটি একটি কমান্ড লাইন প্যারামিটার হিসাবে একটি শব্দের তালিকার ফাইলের নাম নেয়। এটি হ'ল, আপনার এটি এ জাতীয়ভাবে চালানো উচিত:

perl -M5.010 guessword.pl /usr/share/dict/words

এখানে একটি ডি-গল্ফ সংস্করণ রয়েছে:

@w = <>;
for $n (4..12) {
    @x = grep /^.{$n}$/, @w;
    $_ = $w = $x[rand@x];
    vec($_, rand $n, 8) = 42 while ($= = $n/3) > y/\*//;
    print "Level @{[ $n-3 ]}\n=======\n$_";
    say <> eq $w ? ($@ += $=) && correct : wrong, "\nscore: $@0\n"; 
}

বিবৃতিতে vec($_, rand $n, 8) = 42 while ($= = $n/3) > y/*//কয়েকটি আকর্ষণীয় কৌশল রয়েছে। প্রথমত, 42টি একটি নক্ষত্রের ASCII কোড; দেখা যাচ্ছে যে vecএকক অক্ষরে স্ট্রিংয়ের পরিবর্তনের জন্য এটি ব্যবহারের চেয়ে কম substr। দ্বিতীয়ত, ভেরিয়েবলটি $=কেবল পূর্ণসংখ্যার মান নেয়, তাই এটি লুকানো অক্ষরের সংখ্যা সঞ্চয় করতে ব্যবহার করা আমার একটি সাশ্রয় করে int। পরিশেষে, y/*//প্রতিলিপি অপারেটরটি ব্যবহার করে একটি স্ট্রিংয়ের অস্টেরিক্সের সংখ্যা গণনা করার একটি ছোট উপায়।

সম্পাদনা করুন: $@10 দ্বারা বিভক্ত স্কোরটি ব্যবহার করে 7 টি অক্ষর সংরক্ষণ করা হয়েছে এবং আউটপুট চলাকালীন সময়ে এটিতে একটি শূন্য যুক্ত করা হয়েছে (যা এটি ভাবতে আসুন, যদি আমি একটি সাধারণ ভেরিয়েবল ব্যবহার করি তবেও পূর্ববর্তী সংস্করণটির চেয়ে কম হত) ।

সম্পাদনা 2: আউটপুট স্ট্রিংগুলিতে আক্ষরিক নিউলাইনগুলি এম্বেড করা সক্রিয় করে মেসে যাওয়ার চেয়ে একটি চর সংরক্ষণ করে $,


5

রুবি (188)

যুক্তি হিসাবে শব্দগুলি পড়তে ফাইলের নাম নেয় takes

q=*$<
s=0
4.upto(12){|n|o=''+w=q.grep(/^#{?.*n}$/).sample
[*0..n-1].sample(c=n/3).map{|i|o[i]=?*}
puts"Level #{n-3}",?=*7,o
puts STDIN.gets==w ?(s+=c;"correct"):"wrong","score: #{s}0",""}

দুর্দান্ত এক (রুবি পার্লকে মারধর করছেন, কোড গল্ফের এটি কোনও পরিচিত ঘটনা নয় ;-)
ক্রিস্টোফিড

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

3

বাশ, 350 অক্ষর

S=0
for L in {4..12}
do
echo -e Level $(($L-3))\\n=======
W=$(grep -E ^.{$L}$ /usr/share/dict/words|shuf|tail -1)
G=$W
while [ `sed 's/[^*]//g'<<<$G|wc -c` -le $(($L/3)) ]
do
P=$(bc<<<$RANDOM*$L/32767)
G=$(sed "s/\(.\{$P\}\)./\1*/"<<<$G)
done
echo $G
read U
if [ x$U == x$W ]
then
echo correct
S=$(($S+$L/3*10))
else
echo wrong
fi
echo score: $S
done

কোনো প্রতরণা চলবে না! এটি নোটপ্যাড ++ অনুসারে 371 টি অক্ষর।
nyuszika7h

6
@ নিউজিকা 7 এইচ: 21 \ আর চার্স সহ, তাই না? এটি ইউনিক্সের জন্য, যেখানে একটি নতুন লাইন হল একক লাইনফিড চর।
নিনজালজ

@ নিনজালজ: হ্যাঁ, তবে মনে রাখবেন যে সবাই ইউনিক্স লাইন ব্রেক ফর্ম্যাটটি ব্যবহার করে না। আমাদের ন্যায্য হতে হবে। meta.codegolf.stackexchange.com/questions/167/…
nyuszika7h

10
@ নিউউজিকা 7 এইচ: আপনি যদি এটি ব্যবহার করতে পারেন তবে সর্বদা আপনার কোড গল্ফ হওয়া উচিত। যদি আপনার ভাষাতে কিছু করার দুটি সমতুল পদ্ধতি থাকে এবং একটির সংক্ষিপ্ত হয়, তবে কিছু লোক সংক্ষিপ্তটি না জানার কারণে আপনি কি আর বেশি দিন ব্যবহার করেন? লাইন বিরতি হিসাবে, আপনার যদি সিআরএলএফ প্রয়োজন এমন একটি ভাষা থাকে তবে আপনার ভাগ্য খুব কম, তবে আমি এ জাতীয় কোনও ভাষা সম্পর্কে অবগত নই।
জো

1
আপনি প্রায় সর্বদা নিউ লাইন ডাব্লু / সেমিকোলন বা স্পেসগুলি প্রতিস্থাপন করতে পারবেন না?
ব্যারিকার্টার

2

পার্ল: 266

@ARGV='/usr/share/dict/words';@w=<>;$"='';while($l<9){$o=1+int++$l/3;@s=grep{$l+4==length}@w;@g=split//,$t=$s[rand$#s+1];my%r;$r{rand$#g}++while keys%r<$o;$g[$_]='*'for keys%r;print"Level $l\n=======\n@g";print<>eq$t?do{$p+=$o*10;"Correct"}:"Wrong","\nScore: $p\n"}

বা আরও কিছুটা সাদা জায়গা সহ

@ARGV='/usr/share/dict/words';
@w=<>;
$"='';
while($l<9){
  $o=1+int++$l/3;
  @s=grep{$l+4==length}@w;
  @g=split//,$t=$s[rand$#s+1];
  my%r;
  $r{rand$#g}++while keys%r<$o;
  $g[$_]='*'for keys%r;
  print"Level $l\n=======\n@g";
  print<>eq$t?do{$p+=$o*10;"Correct"}:"Wrong","\nScore: $p\n"
}

এবং আমি মনে করি একটি সামান্য কাজ দিয়ে এটি আরও ভাল হতে পারে!


2

আর, 363 অক্ষর

w=tolower(scan("/usr/share/dict/words",what="c"));l=nchar(w);score=0;for(i in 1:9){mw=sample(w[l==i+3],1);cat("Level",i,"\n=======\n",replace(strsplit(mw,"")[[1]],sample(nchar(mw),floor(nchar(mw)/3)),"*"),"\n");v=scan(what="c",n=1,quiet=T);if(length(v)!=0&&v==mw){score=score+10*floor(nchar(mw)/3);cat("correct\n")} else cat("wrong\n");cat("score:",score,"\n\n")}

2

পাইথন 335

আমি জানি আমি পার্টিতে কিছুটা দেরি করেছি, তবে অজগর প্রতিনিধিত্ব করে না, তাই আমি বুঝতে পেরেছিলাম যে হেক:

import sys
import random
D=open(sys.argv[1]).read().split()
random.shuffle(D)
z=0
for L in range(1,10):
 M=L+3;N=M/3;w=[c for c in D if len(c)==M][0];U=list(w)
 for i in[random.randint(0,M-1)for i in range(N)]:U[i]='*'
 print"\nLevel %d\n=======\n"%L+''.join(U);k=raw_input()==w;z+=[0,N*10][k];print["wrong","correct"][k]+"\nscore:",z

এবং আধা-অবরুদ্ধ:

import sys
import random
words = open(sys.argv[1]).read().split()
random.shuffle(words)
score=0
for L in range(1,10):
   M=L+3
   N=M/3
   w=[c for c in words if len(c)==M][0]
   obfus=list(w)
   for i in [random.randint(0,M-1) for i in range(N)]: obfus[i]='*'
   obfus=''.join(obfus)
   print"\nLevel %d\n=======\n"%L+obfus
   correct=raw_input()==w
   score+=[0,N*10][correct]
   print["wrong","correct"][correct]+"\nscore:",score

2

কে, 198

বর্তমান কার্যক্ষম ডিরেক্টরিতে একটি অভিধান ডি অনুমান করে।

{O:{@[x;(-_c%3)?c:#x;:;"*"]}',/W:{1?x@&y=#:'x}[_0:`d]'4+!9;i:1+S:0;while[#O;-1"Level ",$i;-1"=======";-1@*O;$[(**W)~0:0;[-1"correct";S+:10*+/"*"=*O];-1"wrong"];-1"score: ",$S;-1"";W:1_W;O:1_O;i+:1]}

Ungolfed:

{
        /W = wordlist; O = obfuscated
        O:{@[x;(-_c%3)?c:#x;:;"*"]}',/W:{1?x@&y=#:'x}[_0:`d]'4+!9;     
        i:1+S:0;                            
        while[#O;
                -1"Level ",$i;
                -1"=======";
                -1@*O;
                $[(**W)~0:0;              /Read user input and compare to the first word
                        [-1"correct";
                        S+:10*+/"*"=*O];  /if correct, increment score
                        -1"wrong"];
                -1"score: ",$S;
                -1"";
                W:1_W;                    /knock one off the top of both word lists
                O:1_O;
                i+:1]
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.