অগ্রগতিতে ASCII হ্যাঙ্গম্যান


21

( কোড রিভিউ সম্পর্কিত একটি প্রশ্ন দ্বারা অনুপ্রাণিত )

ধরুন দু'জন লোক হ্যাঙ্গম্যান খেলছে , তবে আপনি কেবল খেলাটি শুনেছেন এবং বর্তমান অবস্থাটি আঁকতে চান।

ইনপুট হিসাবে দুটি শব্দ দেওয়া হয়েছে, যেখানে প্রতিটি শব্দ [A-Z]+বা [a-z]+আপনার পছন্দ অনুসারে শব্দগুলি নীচের নিয়মগুলি অনুসরণ করে হ্যাঙ্গম্যান গেমের বর্তমান অবস্থাকে ASCII আর্ট হিসাবে আউটপুট দেয়।

  • প্রথম শব্দটি অনুমান করার শব্দ এবং দ্বিতীয় শব্দটি ইতিমধ্যে অনুমান করা অক্ষর। এগুলি কোনও ক্রমে ইনপুট হিসাবে নেওয়া যেতে পারে।
  • অনুমান করা শব্দটি খালি খালি গ্যারান্টিযুক্ত, তবে ইতিমধ্যে অনুমান করা অক্ষরগুলি খালি থাকতে পারে (অর্থাত্, এটি খেলার শুরু)।
  • গেমটি সর্বদা একটি বৈধ হ্যাঙ্গম্যান গেম হবে (যেমন, অনুমান করা অক্ষরগুলি সদৃশ হবে না, গেমের শেষের পরে বর্ণগুলি অনুমান করা হবে না, আপনি কেবল ইনপুট হিসাবে অক্ষর পাবেন) ইত্যাদি।
  • হ্যাঙ্গম্যান অঙ্কনের নীচে অবশ্যই শব্দটি অনুমান করা উচিত, _অক্ষরের জায়গায় এখনও অজানা, ফাঁক দিয়ে পৃথক করা উচিত। উদাহরণস্বরূপ, যদি অনুমান করা শব্দটি হয় BOATতবে হ্যাঙ্গম্যান অঙ্কনের নীচে থাকা আবশ্যক _ _ _ _। শব্দ হয়ে থাকে তাহলে BOATসঙ্গে Aঅনুমিত, তারপর নিচের অঙ্কন করা আবশ্যক _ _ A _
  • শব্দ ইতিমধ্যে অনুমিত অক্ষর হওয়া আবশ্যক অনুমিত করা নীচে না শব্দে। এগুলি যে কোনও ক্রমে হতে পারে এবং কোনও ইচ্ছা অনুসারে যেকোন অ বর্ণানুক্রমিক বিভাজক দ্বারা পৃথক করা যায়।

এখানে প্রাথমিক শুরু থেকে গেমের শেষ পর্যন্ত হ্যাঙ্গম্যান গেমের রাজ্যগুলি। প্রতিটি ভুলভাবে অনুমান করা চিঠি একের পর এক রাষ্ট্রকে অগ্রসর করে। সুতরাং প্রথম ভুলভাবে অনুমিত অক্ষরটি মাথাটি Oউপস্থিত করে তোলে, পরবর্তীটি শরীরে |উপস্থিত হয়, ইত্যাদি makes

  +---+
  |   |
      |
      |
      |
      |
=========

  +---+
  |   |
  O   |
      |
      |
      |
=========

  +---+
  |   |
  O   |
  |   |
      |
      |
=========

  +---+
  |   |
  O   |
 /|   |
      |
      |
=========

  +---+
  |   |
  O   |
 /|\  |
      |
      |
=========

  +---+
  |   |
  O   |
 /|\  |
 /    |
      |
=========

  +---+
  |   |
  O   |
 /|\  |
 / \  |
      |
=========

ইনপুট

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

আউটপুট

হ্যাঙ্গম্যান গেমের ফলস্বরূপ ASCII শিল্পের উপস্থাপনা, যেমন উপরে বর্ণিত হয়েছে, আবার কোনও সুবিধাজনক বিন্যাসে।

বিধি

  • নেতৃস্থানীয় বা পিছনে থাকা নতুন লাইনের বা হোয়াইটস্পেসগুলি সমস্ত alচ্ছিক, যতক্ষণ না অক্ষরগুলি নিজেরাই সঠিকভাবে লাইন করে থাকে।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন পরীক্ষার পরিবেশের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে অন্য লোকেরা আপনার কোডটি চেষ্টা করে দেখতে পারে!
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

# 1

BOAT এবং ATG

  +---+
  |   |
  O   |
      |
      |
      |
=========
_ _ A T
G

# 2

ZEPPELIN এবং

  +---+
  |   |
      |
      |
      |
      |
=========
_ _ _ _ _ _ _ _

# 3

ZEPPELIN এবং EATOLINSHR

  +---+
  |   |
  O   |
 /|\  |
 / \  |
      |
=========
_ E _ _ E L I N
A T O S H R

# 4

RHYTHM এবং ABCDE

  +---+
  |   |
  O   |
 /|\  |
 /    |
      |
=========
_ _ _ _ _ _
EDCBA

# 5

BOAT এবং ATOB

  +---+
  |   |
      |
      |
      |
      |
=========
B O A T

6 নম্বর

AIRPLANE এবং AJKEI

  +---+
  |   |
  O   |
  |   |
      |
      |
=========
A I _ _ _ A _ E
KJ

ভুল অক্ষরের অবশ্যই ইনপুট ক্রম সংরক্ষণ করতে হবে?
রড

@ রড নং, ভুল অনুমানের ক্রম সংরক্ষণ করার দরকার নেই।
অ্যাডমবর্কবার্ক

2
দয়া করে একটি পরীক্ষার কেস যুক্ত করুন যেখানে সমস্ত অক্ষর সঠিকভাবে অনুমান করা হয় এবং একটি যেখানে সমস্ত অনুমান করা হয়েছে
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আমি পরীক্ষার কেস # 5 যুক্ত করেছি যেখানে ব্যক্তি এখনই "BOAT" সফলভাবে অনুমান করেছিলেন।
অ্যাডমবর্কবার্ক

আমি একটি পরীক্ষার কেস যুক্ত করেছি যাতে সঠিক বিল্ডিং ক্রম এবং উপরে থেকে নীচে / বাম থেকে ডানদিকে বিল্ডিংয়ের মধ্যে পার্থক্য করার জন্য মাত্র দুটি ভুল অক্ষর রয়েছে।
জাস্টিন মেরিনার

উত্তর:


10

পাইথন 2 , 215 192 184 183 বাইট

-8 বাইট র্যাফেল সিটি
-1 বাইট ধন্যবাদ জোনাথন ফ্রেচকে ধন্যবাদ

a,b=input()
j=' '.join
s=b-set(a)
print"""  +---+
  |   |
  %s   |
 %s%s%s  |
 %s %s  |
      |
=========
"""%tuple('O/|\/\\'[:len(s)].ljust(6)),j(['_',i][i in b]for i in a),'\n',j(s)

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


সমস্ত new n কে নতুন লাইনে রূপান্তরিত করে এবং "" "দিয়ে মাল্টলাইন স্ট্রিং ব্যবহার করে এবং ইনপুটটির" কোনও সুবিধাজনক বিন্যাস "ব্যবহার করে এবং সেট কলগুলি ইনপুটটিতে ফিরে সেট করে আমি 172 বাইটে নামতে সক্ষম হয়েছি
রাফায়েল কেটি

হুঁ, আপনি পরিবর্তনগুলি লিঙ্ক করতে পারেন? আমি কেবল 184 বাইটে পৌঁছাতে সক্ষম হয়েছি
রড

184 ভাল: কোড থেকে সেটগুলি সরিয়ে ফেলা আসলে আউটপুটটিকে ভেঙে ফেলেছিল, তাই এটি কার্যকর হয়নি। পরিবর্তন করা হচ্ছে \ N তাই তারা হয়ে ওঠে নতুন লাইন সাহায্য করেছিল কিন্তু আমি আসলে শুধুমাত্র 189. 3 বাইট মুছে tio.run/...
রাফায়েল কোত

1
আমি বিশ্বাস করি যখন 2 টি ভুল চিঠি রয়েছে তখন |বাম হাত ( ) এর পরিবর্তে আপনাকে দেহের টুকরা ( ) দেখানো উচিত /: অনলাইনে চেষ্টা করে দেখুন
জাস্টিন মেরিনার

"\\/"সমান "\/"
জোনাথন ফ্রেচ

8

কাঠকয়লা , 83 69 68 বাইট

Fη¿№θι⁰«ι→⊞υι»←⸿Fθ«⎇№ηιι_→»←⸿×=⁸↖=←↑⁵←+←³↓+|FLυ≡ι⁰↓O¹←|²/|³\⁴⸿ /⁵ \«

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: স্যুইচ করে 14 বাইট সংরক্ষণ করা হয়েছে switch|আক্ষরিক হিসাবে একক মুদ্রণের মাধ্যমে 1 বাইট সংরক্ষণ করা হয়েছে । নোট: সময়ে প্রশ্ন ছিল switchশব্দবহুল মোডে এ সব কাজ করে নি এবং একটি trailing প্রয়োজন «সংক্ষিপ্ত মোড (তাই এটা 67 বাইট হিসাবে সংক্ষিপ্ত অনুবাদ দেখায় Tio বর্তমান সংস্করণ, তন্ন তন্ন বাগ আছে) মধ্যে, যখন Mapএর বাগগুলি আমাকে ব্যবহার করতে বাধা দিয়েছে Print(Join(Map(q, Ternary(Count(h, i), i, "_")), " "));। ভাগ্যক্রমে আমি একই দৈর্ঘ্যের জন্য একটি কুলডেজ নিয়ে আসতে সক্ষম হয়েছি (এবং প্রকৃতপক্ষে আমি অন্যান্য লুপটি কোনও মানচিত্রে স্যুইচ করার চেষ্টাও করেছি তবে এটিও একই দৈর্ঘ্যে এসেছিল)। ব্যাখ্যা:

Fη              For each letter in the guess,
  ¿№θι⁰«        if the word to be guessed does not contain the letter,
        ι→      print the failed guess, leave a gap,
          ⊞υι»  and push the letter to the array.

←⸿              Move to the start of the previous line.

Fθ«             For each letter in the word to be guessed,
   ⎇№ηιι        if the letter has been guessed then print it
        _       otherwise print a _.
         →»     Either way, leave a gap.

←⸿              Move to the start of the previous line.

×=⁸             Print 8 =s
   ↖=←          Print a 9th =, moving into position to
      ↑⁵        print 5 |s upwards,
        ←+←³    a + and 3 -s left,
            ↓+| and a + and a | down.

FLυ             Loop once for each incorrect guess.
   ≡ι           Choose what to print based on the loop index.
     ⁰↓O        For the first incorrect guess, print an O.
     ¹←|        For the second incorrect guess, print a |.
     ²/         For the third incorrect guess, print a /.
     ³|\        For the fourth incorrect guess, print a \.
     ⁴⸿ /       For the fifth incorrect guess, print a / on the next line.
     ⁵ \        For the sixth incorrect guess, print another \.

2
এই ভাষা ... এটি আমাকে ভয় দেখায়।
সের্গেই গ্রেনেভ

@ সের্গেগ্রিনিভ ডি: কেন এত ভয়ঙ্কর
এএসসিআইআই-

@ এএসসিআইআই-কেবলমাত্র আমি লক্ষ্য করেছি যে আপনি ঠিক করেছেন মানচিত্র (স্ট্রিং, এক্সপ্রেশন) তবে মানচিত্র (অ্যারে, এক্সপ্রেশন) এখনও বগিযুক্ত - এটি কমান্ডের পরিবর্তে অভিব্যক্তি হিসাবে ব্যবহৃত হলে মূল অ্যারেটিকে পরিবর্তন করে। এটি অনলাইন চেষ্টা করুন!
নিল

@ এএসসিআইআই-হি হেই, এটি কোনও ভাষার জন্য দুর্দান্ত ধারণা, তবে স্ক্রিপ্টগুলি দেখে মনে হচ্ছে যে চথুলহু বানান আহ্বান করতে লাভফ্র্যাক্ট কিছু ব্যবহার করবে।
সের্গেই গ্রিনিভ

@ নীল এটি উদ্দেশ্যমূলক আচরণ, বেশিরভাগ ক্ষেত্রে তাই কোষের ডেটাটাইপ ম্যাপ করার সময় এটি ক্যানভাসটি পরিবর্তন করে তবে আমার ধারণা হ্যাঁ আপনাকে প্রায়শই মানচিত্রের পরে মূল ডেটা ব্যবহার করা দরকার, এটি আগামীকালই ঠিক করা উচিত
এএসসিআইআই

7

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

x,y=input()
x=[['_',k][k in y]for k in x]
y-=set(x)
s='''  +---+
  |   |
  0   |
 213  |
 4 5  |
      |
'''
for i in range(6):s=s.replace(`i`,[' ','O|/\\/\\'[i]][len(y)>i])
print s+'='*9+'\n'+' '.join(x)+'\n'+''.join(y)

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

-35 বাইট র্যাফেল সিটি
-20 বাইট সেট ব্যবহার করে
-1 বাইট মাইক্রোথিককে ধন্যবাদ


3
সংখ্যার সাথে "প্রতিস্থাপন করুন" এর জন্য সুন্দর ধারণা :)
ভি। কর্টয়েস

@ ভি.কোর্তোয়াইস ধন্যবাদ :) আমি ব্যবহার করতে যাচ্ছিলাম translateতবে এটি দীর্ঘতর হবে না।
হাইপারনিউটারিনো

হাই @ হাইপারনিউট্রিনো, সাবমিশনের সাথে ভাল কাজ! আমি মনে করি এটি ব্যবহার করে শেষে 2 টি লুপ একের মধ্যে রাখা যেতে পারে for i in range(7):s=s.replace(`i`,'O|/\\/\\'[i] if i<c else ' ')t এটি আপনাকে একটি একক লুপ দেয় এবং আপনি যদি সি এর চেয়ে বেশি হন তবে আপনি প্রতিস্থাপনটি স্যুইচ আউট করতে পারেন। আপনি এভাবে 251 বাইটে
নামতে পারেন

@ রাফালকিট চমৎকার গল্ফ ধন্যবাদ!
হাইপারনিউটারিনো

সি কেবল অকেজো হয়ে গেল। কেবল লেন (y) ব্যবহার করুন এবং 4 বাইট সংরক্ষণ করুন! আমরা রক!
রাফাল কেটি

5

জেলি ,  72  73 বাইট

+1 একটি এস গেম বাগ ফিক্সিং যা সম্পূর্ণ ফাঁসী ব্যক্তিকে দেখায় ( শেষের দিকে বদলে LNযায় Lạ6)

e€a⁸o”_$,ḟ@©K€Y,@“¥[$⁼Ż⁸½c¤ṫȷṃl®ḌvNṂeL©?Ḥ’ṃ“ -¶|O/\=+”¤Y⁶“$"÷ȷñŒ‘ḣ®Lạ6¤¤¦

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

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

কিভাবে?

প্রথমত:

“¥[$⁼Ż⁸½c¤ṫȷṃl®ḌvNṂeL©?Ḥ’ - base 250 number
                            = 305169639782226039115281574830092231403740634016078676

বেস 9, যেখানে 9 টি সংখ্যা প্রতিটি অক্ষরের এক প্রতিনিধিত্ব পূর্ণ ফাঁসি ব্যক্তির সাংখ্যিক মান হল: <space>, <newline>, -, |, O, /, \, =, অথবা +

প্রোগ্রাম বাকি:

e€a⁸o”_$,ḟ@©K€Y,@“...’ṃ“...”¤Y⁶“...‘ḣ®Lạ6¤¤¦ - Main link word, letters
e€                                           - exists in letters for €ach char in word
  a⁸                                         - and with word (word with 0 at un-guessed)
    o”_$                                     - or with '_' (word with _ at un-guessed)
         ḟ@                                  - filter remove (incorrect guesses)
           ©                                 - copy the result to the register and yield
        ,                                    - pair
            K€                               - join €ach with spaces
              Y                              - join with (a) newlines
                            ¤                - nilad followed by link(s) as a nilad:
                 “...’                       - the number described above
                       “...”                 - list of chars " -¶|O/\=+" (¶ = a newline)
                      ṃ                      - base decompress using the chars as digits
               ,@                            - pair (using swapped @rguments)
                             Y               - join with (a) newlines
                                           ¦ - sparse application:
                              ⁶              -   of: a space character
                                             -   to indexes:
                                          ¤  -     nilad followed by links as a nilad:
                               “...‘         -       literal [36,34,28,26,27,19]
                                         ¤   -       another nilad chain:
                                     ®       -         recall from register
                                      L      -         length (# of bad guesses)
                                       ạ6    -         absolute difference with 6
                                    ḣ        -       head (get the indexes to "erase"
                                             -             by applying the space char)
                                             - as a full program: implicit print

এটি পরীক্ষা BOATATOBপরীক্ষার ক্ষেত্রে ব্যর্থ । এটি অনলাইন চেষ্টা করুন!
ফায়ার ফ্লেম 241

আহ, এটি নির্দেশ করার জন্য ধন্যবাদ, আমি এটি 2 বাইটের জন্য ঠিক করব ... কেবল একটি ব্যাখ্যা লিখছি।
জোনাথন অ্যালান

সম্পন্ন, এবং এটি 1 বাইট করুন।
জোনাথন অ্যালান

দ্রষ্টব্য: "হ্যাঙ্গ" করার অতীত কালটি যখন মানুষের কাছে আসে তখন "ফাঁসি" দেওয়া হয়, "ঝুলানো" হয় না। ক্ষতিপূরণের জন্য মাত্র একটি নাইটপিক রয়েছে +1
হাইপারনিউটারিনো

@ ̛Ευτŗιͷনো হে, আমি এক জায়গায় ঝুলিয়েছিলাম এবং অন্য জায়গায় ঝুলিয়েছিলাম এবং পরে পরিবর্তন করেছি। (আমি "পুরোপুরি "ও বলেছিলাম, যেন অসম্পূর্ণ ব্যক্তিকেও পুরোপুরি ফাঁসি দেওয়া হয়নি))
জোনাথন অ্যালান

3

জাপট ভি 2 , 94 91 83 81 বাইট

@ETH উত্পাদনের 'এ সম্পর্কে কিছু ধারণা থেকে -3 বাইট ।
মাল্টিলাইন স্ট্রিং রোটেশন ব্যবহার করে -8 বাইট।
ভি 2 ব্যবহার করে -2 বাইট।

["+|||||
-
-
-  35
+|01
   24
"r\d_¨VkU l ?S:"O|/\\/\\"gZÃz '=³³¡VøX ?X:'_øVkU]·

অনুমানকারী শব্দের সাথে প্রথম এবং অনুমানযুক্ত অক্ষরটি দ্বিতীয় সহ অক্ষরের অ্যারে হিসাবে উভয় শব্দের ইনপুট গ্রহণ করে। ভুল অক্ষর ,গুলি দ্বারা আলাদা করে দেখানো হয়েছে। যখন কোনও ভুল অক্ষর নেই, শেষ লাইনটি ফাঁকা (যার অর্থ আউটপুটটিতে অতিরিক্ত ট্রেলিং নিউলাইন থাকে)।

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

ব্যাখ্যা

অন্তর্নিহিত: Uএবং Vইনপুট চর অ্যারে হয়।

["..."

একটি অ্যারে শুরু করুন এবং 90 ° বামদিকে ঘোরানো, হ্যাঙ্গিং ম্যান ফর্ম্যাট স্ট্রিংটি ধাক্কা দিন °

r\d_

( r)) প্রতিটি \dফাংশন ( ) নিম্নলিখিত ফাংশন দ্বারা প্রতিস্থাপন :

¨VkU l ?S:"O|/\\/\\"gZÃ

তাহলে ডিজিট >=( ¨ভুল অনুমান (পরিমাণ) VkU l), একটি স্থান ( S), অন্যথায়, যে অঙ্ক জন্য উপযুক্ত শরীরের অংশ পেতে ( "..."gZ)।

z '=³³

ঝুলন্ত মানুষটিকে 90 right ডানদিকে ঘোরান এবং অ্যারেতে =পুনরাবৃত্তি 3 * 3 ( ³³) বার করুন।

¡VøX ?X:'_Ã

ম্যাপ করা বর্ণ (সঙ্গে, শব্দ-টু-অনুমান পুশ ¡) হয় পরস্পরে ( X) যদি অন্তর্ভুক্ত V( VøXবা), _যদি না, এবং স্পেস (সাথে যোগ ¸অ্যারেতে)।

VkU]·

অনুমানযোগ্য-অক্ষরগুলিকে, শব্দ-থেকে-অনুমানের ( k) থেকে সরানো অক্ষরের সাথে আউটপুট অ্যারেতে পুশ করুন । অ্যারে বন্ধ করুন এবং নতুনলাইনগুলির সাথে যোগ দিন ( ·)।

ঘূর্ণন দৃশ্যমান:

+|||||      +---+
-           |   |
-      ->   0   |
-  35      213  |
+|01       4 5  |
   24             

আমার অনুরূপ কিছু ছিল: ethproductions.github.io/japt/… (যদিও এখন আমি লক্ষ্য করেছি যে মাঝের তিনটি অংশকে আমার ক্রমযুক্ত করে দেওয়া হয়েছে)। আমি আপনার কিছু অংশ দেখতে পাচ্ছি যা এটি কীভাবে করা হয়েছিল তার চেয়ে ছোট, সম্ভবত আমাদের উত্তরগুলি আরও সংক্ষিপ্ত কিছুতে মিলিত করতে পারে।
ETH প্রোডাকশন

@ ইথ প্রডাকশনগুলি আমি আপনার বাড়ানোর ধারণাটি ভাবি না W শরীরের অংশগুলি বাম থেকে ডান / উপরে-নীচে প্রদর্শিত না হওয়ায় পারে। যদিও আপনার সংস্করণ থেকে আমি কয়েকটি বাইট সংরক্ষণ করতে সক্ষম হয়েছি।
জাস্টিন মেরিনার

2

05 এ বি 1 ই , 83 বাইট

•LO„Ÿ¼Ì‘Šη…ÔÆ#δʒΣ•6B4ÝJ"+ -|="‡²¹SK©Ùg"O/|\/\"s£v5y.;}7ô»„==«5ð:¹D²SKDg'_ׇSðý®Sðý»

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


বিটম্যাপ:

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

•LO„Ÿ¼Ì‘Šη…ÔÆ#δʒΣ• # Push number described below in base-10.

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

এটি নিম্নলিখিত বিটম্যাপ পরিকল্পনাটি পুশ করে:

1102220
1131113
1151113
1555113
1515113
1111113
4444444

যেখানে নিম্নলিখিত অতিরিক্ত বাইট:

05 এ বি 1 ই , 13 বাইট

6B            # Convert to base-6.
  4ÝJ         # Push 01234.
     "+ -|="  # Push that string.
            ‡ # Replace numbers with those letters.

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

হ্যাঙ্গম্যানের টুকরো পরে প্রতিস্থাপনের জন্য 5 টি রেখে উপযুক্ত অক্ষরের সাথে বিটম্যাপের টুকরোগুলি প্রতিস্থাপন করুন:

  +---+
  |   |
  5   |
 555  |
 5 5  |
      |
=======

ফাঁসি মানুষ:

পরবর্তী, আমরা গণনা করি যে দ্বিতীয় ইনপুটটিতে থাকা অক্ষরগুলি প্রথম ইনপুটটিতে না পেয়ে ব্যবহারকারী কতবার ভুল অনুমান করেছিলেন:

05 এ বি 1 ই , 6 বাইট

²¹SK   # Get wrong guesses.
    ©Ù # Store them, and get unique wrong letters.

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


শেষ অবধি, আমরা ফাঁসি মানুষটিতে বিকল্প হিসাবে একটি দ্বিতীয় বিটম্যাপ ব্যবহার করি, নিউলাইন দ্বারা পৃথক করে চূড়ান্ত মুদ্রণের জন্য এটি প্রস্তুত করি:

05 এ বি 1 ই , 26 বাইট

g                           # Get the number of "messups".                       
 "O/|\/\"s£                 # Only that many chars of the hanged "bitmap".
           v5y.;}           # Replace 5's with "bitmap".
                 7ô»        # Split into rows.
                    „==«5ð: # Remove additional 5's.

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

প্রথম টুকরোতে এটি ফলাফল, কেবলমাত্র বাকী টুকরোগুলি পৃথক ফর্ম্যাটে নীচে দুটি শব্দকে আউটপুট দিচ্ছে ...


নীচের শব্দগুলি:

অনুপস্থিত অনুমান ব্যতীত প্রথম শব্দটি মুদ্রণ করুন:

05 এ বি 1 ই , 15 বাইট

¹D²SK          # Word without the missing guesses.
     Dg'_ׇ    # Replace missing guesses with "_".
           Sðý # Join by spaces.

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


05 এ বি 1 ই , 5 বাইট

®     # Print stored missing guesses.
 Sðý  # Separated by spaces.
    » # Print everything in stack with newlines.

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

আগের থেকে গণিত মিস করা অনুমানগুলি মুদ্রণ করুন যা আমরা কোনও রেজিস্টারে সংরক্ষণ করেছি।


1
আমি বিটম্যাপ ধারণাটি সত্যিই পছন্দ করি (এটি নিজের উত্তরটিতে প্রয়োগ করার চেষ্টা করছি) এমনকি আপনার উত্তরটি বাম বাহুটি ( /) শরীরের সামনে রাখে ( |)। দুটি ভুল বর্ণের ফলশ্রুতিতে মাথা এবং দেহের টুকরোগুলি দেখা উচিত। অনলাইনে এটি ব্যবহার করে দেখুন
জাস্টিন মেরিনার 3

1

জেলি , 86 বাইট

3ȷ6Dẋ6Ḍ+“Ȧṇ⁹c’
œ-Lḣ@“Ñæçðøþ‘⁵*$€×“µI,’D¤¤S+¢Dị“+-|/\O ”Us7Y,”=x9¤Y;⁷,œ-ðjɓi@€ị³;”_¤K;⁷

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

হুঁ ... এটা মজা ছিল। আমি এতগুলি ¤চরিত্র কখনও ব্যবহার করি নি ।

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

3ȷ6Dẋ6Ḍ+“Ȧṇ⁹c’ (1) the literal 300000030000003000000300000030003001222100
3ȷ6              - literal 3*10^6 = 3000000
   D             - digits
    ẋ6           - repeat six times
      Ḍ          - return to integer: 300000030000003000000300000030000003000000
       +         - add
        “Ȧṇ⁹c’   - literal 2998222100

œ-Lḣ@“Ñæçðøþ‘⁵*$€×“µI,’D¤¤S+¢Dị“+-|/\O ”Us7Y,”=x9¤Y,œ-;⁷ð,ɓi@€ị³;”_¤K;⁷
œ-Lḣ@“Ñæçðøþ‘⁵*$€×“µI,’D¤¤S - representation of the body parts
œ-L                           - wrong letters length
   ḣ@                         - get that many elements from the start of
                        ¤¤    - the literal:
     “Ñæçðøþ‘                   - [16, 22, 23, 24, 29, 31]
             ⁵*$€               - 10 to the power of each of them
                 ×              - multiplies by
                  “µI,’D        - the list [6, 4, 3, 5, 4, 5]
                          S   - sum
+¢Dị“+-|/\O ”Us7Y,”=x9¤;⁷  - complete the man
+                           - add
 ¢                          - the literal 3000000...1222100 calculated by link 1
  D                         - digits
   ị“+-|/\O ”               - index into the string “+-|/\O ”
             Us7Y           - reverse, split into lines of 7, join by linefeeds
                 ,          - append
                  ”=x9¤;⁷     - the string “=========”
                       ;⁷    - add a newline
,œ-                 - append missed letters:
,                      - append
 œ-                    - set difference
ð,ɓi@€ị³;”_¤K;⁷     - append the blanks        
ð,ɓ                   - append
   i@€ị³;”_¤            - each letter if it is included in guesses, _ otherwise
            K         - join by spaces  
             ;⁷       - add a newline

এটি লোকটিকে ভুল ক্রমে টেনে নিয়ে যায়; বাম হাতের আগে মাথার পরে ধড়টি আসা উচিত।
শেগি

1

সি #, 305 296 বাইট

using System.Linq;w=>g=>{var r=string.Concat(g.Where(c=>!w.Contains(c)));var n=r.Length;return$@"  +---+
  |   |
  {(n>0?"O":" ")}   |
 {(n>2?"/":" ")+(n>1?"|":" ")+(n>3?"\\":" ")}  |
 {(n>4?"/":" ")} {(n>5?"\\":" ")}  |
      |
=========
{string.Join(" ",w.Select(c=>g.Contains(c)?c:'_'))}
"+r;}

@ রেজাগুলকে ধন্যবাদ 9 বাইট

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

সম্পূর্ণ / ফর্ম্যাট সংস্করণ:

using System;
using System.Linq;

class P
{
    static void Main()
    {
        Func<string, Func<string, string>> f = w=>g=>
        {
            var r = string.Concat(g.Select(c => !w.Contains(c) ? c + "" : ""));
            var n = r.Length;

            return $@"  +---+
  |   |
  {(n > 0 ? "O" : " ")}   |
 {(n > 2 ? "/" : " ") + (n > 1 ? "|" : " ") + (n > 3 ? "\\" : " ")}  |
 {(n > 4 ? "/" : " ")} {(n > 5 ? "\\" : " ")}  |
      |
=========
{string.Join(" ", w.Select(c => g.Contains(c) ? c : '_'))}
" + r;
        };

        Console.WriteLine(f("BOAT")("ATG") + "\n");
        Console.WriteLine(f("ZEPPELIN")("") + "\n");
        Console.WriteLine(f("ZEPPELIN")("EATOLINSHR") + "\n");
        Console.WriteLine(f("RHYTHM")("ABCDE") + "\n");
        Console.WriteLine(f("BOAT")("ATOB") + "\n");

        Console.ReadLine();
    }
}

এটি 314 বাইটের জন্যও কাজ করে (সম্ভবত এটি আরও ছোট হতে পারে):

using System.Linq;w=>g=>{var r=string.Concat(g.Select(c=>!w.Contains(c)?c+"":""));var s=$@"  +---+
  |   |
  0   |
 213  |
 4 5  |
      |
=========
{string.Join(" ",w.Select(c=>g.Contains(c)?c:'_'))}
"+r;for(int i=0;i<6;++i)s=s.Replace(i+"",i<r.Length?i<1?"O":i<2?"|":i<3?"/":i<4?"\\":i<5?"/":"\\":" ");return s;}

আপনি প্রতিস্থাপন করতে পারেন g.Select(c=>!w.Contains(c)?c+"":"")সঙ্গে g.Where(c=>!w.Contains(c))
রাজনগুল

@ রজনগুল ধন্যবাদ!
TheLethalCoder

1

জাভাস্ক্রিপ্ট (ইএস 6), 203 196 187 186 185 184 180 177 176 বাইট

বাক্য গঠনের ক্ষেত্রে পৃথক অক্ষরের 2 টি অ্যারে হিসাবে ইনপুট নেয়।

a=>g=>`  +---+
  |   |
  1   |
 324  |
 5 6  |
      |
=========
${a.map(x=>g[s="includes"](x)?x:"_")}
`.replace(/\d|,/g,m=>" O|/\\/\\"[!!w[~-m]*~~m],w=g.filter(x=>!a[s](x)))+w

এটি খেলুন চেষ্টা করুন

o.innerText=(f=
a=>g=>`  +---+
  |   |
  1   |
 324  |
 5 6  |
      |
=========
${a.map(x=>g[s="includes"](x)?x:"_")}
`.replace(/\d|,/g,m=>" O|/\\/\\"[!!w[~-m]*~~m],w=g.filter(x=>!a[s](x)))+w)([...i.value="ZEPPELIN"])([...j.value=""])
oninput=_=>o.innerText=f([...i.value.toUpperCase()])([...j.value.toUpperCase()])
label,input{font-family:sans-serif;font-size:14px;height:20px;line-height:20px;vertical-align:middle}input{margin:0 5px 0 0;width:100px;}
<label for=i>Word: </label><input id=i type=password><label for=j>Guesses: </label><input id=j><pre id=o>


মধ্যম "শরীর" টুকরা দ্বিতীয় আসা উচিত এবং বাম হাত তৃতীয়, তাই আপনার স্ট্রিং এর সংখ্যা অংশ হওয়া উচিত 1, 324, 5 6(শেষ পরীক্ষা ক্ষেত্রে দেখুন)।
জাস্টিন মেরিনার

উফফফ, আমি কীভাবে করলাম। এটি নির্দেশ করার জন্য ধন্যবাদ, @ জাস্টিনমারিনার
শেগি

0

স্কালা , 392 389 বাইট

এটি এখনও ভারীভাবে গল্ফযোগ্য হতে পারে।

অনুমান করার শব্দ এবং ইতিমধ্যে চেষ্টা করা অক্ষরযুক্ত স্ট্রিং সহ এটি কোনও ফাংশন গ্রহণের sএবং tপরামিতিগুলির ভিতরে রয়েছে ।st

var f=s.map(x=>if(t contains x)x else"_") mkString " "
var o="""  +---+
  |   |
  0   |
 213  |
 4 5  |
      |
=========
"""
var c=0
var g=t.filter(x=>if(s contains x){false}else{c match{case 0=>o=o.replace("0","o")
case 1=>o=o.replace("1","|")
case y if y==2|y==5=>o=o.replace(y+"","\\")
case y if y==3|y==4=>o=o.replace(y+"","/")
case _=>()}
c+=1
true})
o.replaceAll("\\d"," ")+f+"\n"+g

সম্পাদনা:
-১ বাইট: t.contains(x) -> t contains x
-১ বাইট: s.contains(x) -> s contains x
-১ বাইট:.mkString(" ") -> mkString " "

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


0

পিএইচপি 7, 246 বাইট

for($t="  +---+
  |   |
  1   |
 324  |
 5 6  |
      |
=========
";$c=($w=$argv[1])[$i++];)$t.=strstr($g=$argv[2],$c)?"$c ":"_ ";for($t.="
";$c=$g[$k++];)strstr($w,$c)?:$t.=$c.!++$n." ";for(;$p++<6;)$t=strtr($t,$p," O|/\/\\"[$p>$n?0:$p]);echo$t;

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

for($t="  +---+\n  |   |\n  1   |\n 324  |\n 5 6  |\n      |\n=========\n";
    $c=($w=$argv[1])[$i++]; # 1. loop $c through word
)
    $t.=strstr($g=$argv[2],$c)  # if guessed,
        ?"$c ":"_ ";                # then append letter, else append underscore
for($t.="\n";$c=$g[$k++];)  # 2. loop through guesses
    strstr($w,$c)?:             # if not in word
        $t.=$c.!++$n." ";           # add to output, increment $n
for(;$p++<6;)               # 3. loop through possible false guesses
    $t=strtr($t,$p," O|/\/\\"[  # replace digit:
        $p>$n                   # if above no. of wrong guesses
            ?0:$p                   # then with space, else with hangman character
    ]);
echo$t;                     # 4. print
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.