কেমন আছেন! আমি কোড গল্ফের শেরিফ!


30

সম্ভবত কয়েক মাস আগে টুইটার ব্যবহার করা যে কেউ 'হাউডি' সম্পর্কে জানতে পারে! আমি এক্স "মেমের শেরিফ। যেখানে ইমোজি দিয়ে শেরিফের একটি সাধারণ চিত্র অঙ্কিত হয় এবং কোনও থিমের সাথে মানানসই পরিবর্তন ঘটে So তাই আমি ভেবেছিলাম এটি সময় কোড গল্ফের শেরিফের জন্য Here তিনি এখানে আছেন:

    ###
   #####
    ###
    ###
    ###
     #
   #####
  #  #  #
 #   #   #
 #   #   #
     #
    ###
   #   #
   #   #
   #   #
   #   #

এটির একটিতে বিশেষত 'পিক্সেল' রয়েছে যা একটি অক্ষর প্রশস্ত এবং একটি অক্ষর উচ্চ। তাকে উত্পন্ন করতে আর্গুমেন্টগুলি হবে 1 এবং 1।

যদি তার চেয়ে লম্বা হতে হয় তবে তার কি হবে?

      ######
    ##########
      ######
      ######
      ######
        ##
    ##########  
  ##    ##    ##
##      ##      ##
##      ##      ##
        ##
      ######
    ##      ##
    ##      ##
    ##      ##
    ##      ##

সে 1 এর উচ্চতা পেয়েছে, তবে 2 প্রস্থ।


নিয়মাবলী:

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

পরীক্ষার মামলা

1 উচ্চ, 1 প্রশস্ত

    ###
   #####
    ###
    ###
    ###
     #
   #####
  #  #  #
 #   #   #
 #   #   #
     #
    ###
   #   #
   #   #
   #   #
   #   #   

2 উচ্চ, 1 প্রশস্ত

    ###
    ###
   #####
   #####
    ###
    ###
    ###
    ###
    ###
    ###
     #
     #
   #####
   #####
  #  #  #
  #  #  #
 #   #   #
 #   #   #
 #   #   #
 #   #   #
     #
     #
    ###
    ###
   #   #
   #   #
   #   #
   #   #   
   #   #
   #   #
   #   #
   #   #  

1 উচ্চ, 2 প্রশস্ত

      ######
    ##########
      ######
      ######
      ######
        ##
    ##########  
  ##    ##    ##
##      ##      ##
##      ##      ##
        ##
      ######
    ##      ##
    ##      ##
    ##      ##
    ##      ##

2 উচ্চ, 2 প্রশস্ত

      ######
      ######
    ##########
    ##########
      ######
      ######
      ######
      ######
      ######
      ######
        ##
        ##
    ##########  
    ##########  
  ##    ##    ##
  ##    ##    ##
##      ##      ##
##      ##      ##
##      ##      ##
##      ##      ##
        ##
        ##
      ######
      ######
    ##      ##
    ##      ##
    ##      ##
    ##      ##
    ##      ##
    ##      ##
    ##      ##
    ##      ##

-1 উচ্চ, 1 প্রশস্ত

   #   #
   #   #
   #   #
   #   #   
    ###
     #
 #   #   #
 #   #   #
  #  #  #
   #####
     #
    ###
    ###
    ###
   #####
    ###

1 উচ্চ, -1 প্রশস্ত

    ###
   #####
    ###
    ###
    ###
     #
   #####
  #  #  #
 #   #   #
 #   #   #
     #
    ###
   #   #
   #   #
   #   #
   #   #   

0 উচ্চ, 0 প্রশস্ত

#

1 টি উচ্চ, 0 প্রশস্ত

#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#

0 উচ্চ, 2 প্রশস্ত

##################

মজা দাও, সব!


1
এই চ্যালেঞ্জটি আমাকে উল্টো বিশ্ব উপন্যাসের স্মরণ করিয়ে দিয়েছে ।
চার্লি

সম্পর্কিত: ASCII শিল্পের কোনও পুরানো বন্ধুর ছবি (ভেরিয়েবল স্কেল; কোনও বিপরীতকরণ বা সমতলকরণ নয়)
লুইস মেন্ডো

পর্যবেক্ষণ: 1 টি উচ্চ, 2 প্রশস্তটি সবচেয়ে বেশি পরীক্ষার ক্ষেত্রে সর্বাধিক মানব চেহারা, যদিও এর মাঝামাঝি সময়ে আমাকে অস্ট্রেলিয়ানদের জন্য উল্লাস করা বাধ্য
জো কিং

@ জোকিং যদি আমি তাদের নাম দিচ্ছিলাম, আমি অবশ্যই (-1, 1) অস্ট্রেলিয়ান এবং (-1, 2) 'রিয়েলস্টিক অস্ট্রেলিয়ান' হিসাবে থাকতে পারব। যদিও ... সম্ভবত এটি ভুল বোঝাবুঝি হতে পারে।
এজেফারাডে

উত্তর:


39

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

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (width)(height)। স্ট্রিংগুলির একটি অ্যারে প্রদান করে।

w=>h=>[...Array((h>0?h:-h)*16||1)].map((_,y)=>'012345678'.replace(/./g,x=>' #'[((c=+'3733317900134444'[(h<0?16-~y/h:y/h)|0]||17)>>4-x|c>>x-4)&1|!h].repeat(w>0?w:-w))||'#')

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

কিভাবে?

মাঝের কলাম সহ শেরিফের কেবল বাম অর্ধেকটি বাইনারি বিটমাস্ক হিসাবে এনকোড করা রয়েছে:

    ##.         00011     3
   ###..        00111     7
    ##.         00011     3
    ##.         00011     3
    ##.         00011     3
     #          00001     1
   ###..        00111     7
  #  #  .       01001     9
 #   #   .  --> 10001 --> 17
 #   #   .      10001     17
     #          00001     1
    ##.         00011     3
   #   .        00100     4
   #   .        00100     4
   #   .        00100     4
   #   .        00100     4

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

'3733317900134444'

জন্য এবং এ 'পিক্সেল' কর্তৃক প্রদত্ত হয়:0 y 15 ( x , y )0x80y15(x,y)

' #'[                                  // character lookup:
  (                                    //   0 = space
    (                                  //   1 = '#'
      c = +'3733317900134444'[y] || 17 // extract the bitmask for this row; 0 -> 17
    )   >> 4 - x                       // test the left part, middle column included
    | c >> x - 4                       // test the right part, middle column also included
  ) & 1                                // isolate the least significant bit
]                                      // end of character lookup

6
আপনি যত উত্তর পোস্ট করেন না কেন, আমি প্রতিবারই মুগ্ধ হয়েছি ..
কেভিন ক্রুইজসেন

আমি আপনার সংস্করণটি 10 ​​বাইট দ্বারা সংক্ষিপ্ত করে রেখেছি আমি নিশ্চিত না যে এটিকে আমার নিজের হিসাবে পোস্ট করা হবে বা আপনার নিজের বাড়ানো হবে। আমার আপনার কাছ থেকে অনুপ্রেরণা এনেছে যাতে এটি প্রায় সদৃশ হিসাবে দেখা যায়। উপায় দ্বারা দুর্দান্ত চিন্তা: ডি। ভাল করেছ!
ইব্রাহিম মাহরির

... 8 বাইট দ্বারা নয় 10 :
পি

@ বিবিহিমাহ্মাহিরির কখনও কখনও, বহির্মুখী এবং উন্নত হওয়ার মধ্যে একটি পাতলা রেখা থাকে । তাই এটা আপনার উপর নির্ভর করে. আপনি যদি মনে করেন আপনার বাস্তবায়ন যথেষ্ট আলাদা, আপনি আলাদা উত্তর হিসাবে পোস্ট করলে আমার মোটেই আপত্তি নেই।
আর্নৌল্ড

2
@ বিব্রাহিমাহ’র আমি দেখতে পাচ্ছি। আমি মনে করি আমি আরও ভাল হিসাবে এটি করা উচিত। আপনি পৃথক বিকল্প সংস্করণ হিসাবে এখনও পোস্ট করতে পারেন। এটা আমার সাথে ঠিক আছে! (আমি আমার উত্তরে একটি লিঙ্ক যুক্ত করার বিষয়টি নিশ্চিত করেছিলাম))
আর্নল্ড

16

পাইথন 2 , 228 218 202 189 173 বাইট

lambda h,w:sum(([''.join('# '[int(n)]*abs(w)for n in bin([62,120,224,238,438,750][int(l)])[2:])or'#']*abs(h)for l in'1211102455013333'),[])[::1-(h<0)*2]or['#'*9*abs(w)or'#']

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


বিকল্প:

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

lambda h,w:sum(([''.join('# '[int(n)]*abs(w)for n in bin(ord(' >w(8\x96I'[l])*l)[2:])or'#']*abs(h)for l in map(int,'3433314655132222')),[])[::1-(h<0)*2]or['#'*9*abs(w)or'#']
lambda h,w:sum(([''.join('# '[int(n)]*abs(w)for n in bin(ord(' >w(8\x96I'[int(l)])*int(l))[2:])or'#']*abs(h)for l in'3433314655132222'),[])[::1-(h<0)*2]or['#'*9*abs(w)or'#']

8

পার্ল 5 , 169 166 157 বাইট

@a=map"$_\n",(split 1,'  #####1   ###1    #1 #  #  #1#   #   #1  #   #')
[1011120344215555=~/./g];
print s/./$&x abs"@F"/ger x abs$F[1]for$F[1]<0?reverse@a:@a;

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

বিট ফিডিং দ্বারা আরও কিছু অর্জন করা যেতে পারে।


1
দুর্দান্ত পন্থা! আমি আপনার উত্তরের সাথে এবং কয়েকটি পরিবর্তন নিয়ে খেলেছি আপনি বেশ কয়েকটি বাইট সংরক্ষণ করতে পারেন: এটি অনলাইনে চেষ্টা করুন! এটি ঠিক একই পদ্ধতির মাত্রায় সামান্য আলাদা I / O এবং কয়েকটি কৌশল ব্যবহার করে উপাদানগুলি পুনঃক্রম করতে এবং সেগুলি কম বাইটে সঞ্চয় করতে পারে! প্রয়োজনে যে কোনও বিষয়ে বিস্তারিত জানাতে খুশি!
ডম হেস্টিংস 9

টিপ টিপস টিপস split, আমি এখন এটি ব্যবহার করছি এবং দুটি বাইট সংরক্ষণ করেছি। 'সূচকগুলির আশেপাশে গুলি চালিয়ে একটি চাঁচা করাও। sayযদিও কাজে পেতে পারেনি ।
কেজেটিল এস

প্রস্থ এবং উচ্চতা "ফ্রি" দিয়ে পাওয়ার জন্যও Thx এর সাথে -aআরও 9 টি বাইট হারিয়েছে।
কেজেটিল এস

মোটেই কোন সমস্যা নেই! আপনি সক্রিয় করতে পারেন sayসঙ্গে -M5.010, কিন্তু না সবাই, আপনি ব্যবহার করতে পারে লেগেছে -lপরিবর্তে এবং রাখা print, কিন্তু যদি না, আপনি একটি আক্ষরিক সম্পর্কে newline বা ব্যবহার করতে পারেন $_.$/জন্য -1। আরেকটি পার্ল গল্ফার দেখে ভাল লাগল!
ডম হেস্টিংস

এটিকে একা ছেড়ে যেতে পারেনি এবং আরও কয়েকজন হ্রাস করতে সক্ষম হন। sayকাজ করছিল না কারণ নিউলাইনটি এতে যুক্ত হয়েছিল mapতাই এটি ব্যবহার করতে কিছুটা আলাদা কল প্রয়োজন। আমি আরও বুঝতে পেরেছিলাম যে যখন আপনার কোডটি কোনও ভেরিয়েবলের সাথে শেষ হয় এবং আপনি ব্যবহার করছেন -pবা এমন কিছু ব্যবহার করতে পারেন @;যা এতে অন্তর্ভুক্ত রয়েছে: এটি অনলাইনে চেষ্টা করুন! আশা করি আপনি আমার মন্তব্যে আপত্তি করবেন না!
ডম হেস্টিংস

7

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

NθNη¿θF⪪”{“↷C¿2t´⁴Q19·“*Ty”!E↔θ∨⭆ι×μ↔η#×#∨×⁵↔η¹‖OO←∨↔η¹¿‹θ⁰‖↓

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

NθNη

মাত্রা ইনপুট।

¿θF⪪”{“↷C¿2t´⁴Q19·“*Ty”!

উচ্চতা যদি ননজারো হয় তবে শেরিফের ডান অর্ধেকের উপরে লুপ করুন ...

E↔θ

... পরম উচ্চতার সংখ্যা পুনরাবৃত্তি করা হচ্ছে ...

∨⭆ι×μ↔η#

... প্রস্থটি যদি ননজারো হয় তবে প্রতিটি অক্ষরকে বারবারের নিখুঁত সংখ্যার পুনরাবৃত্তি করা উচিত, অন্যথায় ক #

×#∨×⁵↔η¹

তবে উচ্চতা যদি শূন্য হয়, তবে #পরম প্রস্থের 5 গুণ পুনরাবৃত্তি করুন, তবে কমপক্ষে 1 #

‖OO←∨↔η¹

শেরিফের বাম অর্ধেক উত্পাদন করতে প্রতিফলিত করুন।

¿‹θ⁰‖↓

উচ্চতা যদি নেতিবাচক হয় তবে শেরিফটি ফ্লিপ করুন।


4

পাইথন 2 , 217 216 বাইট

h,w=input();t=[];w=abs(w)
for i in range(16):c=bin(32+int('37333179HH134444'[i],26))[-5:];t+=[[''.join(abs(w)*' #'[d>'0']for d in c+c[3::-1]),'#'][w==0]]*abs(h)
print['\n'.join(t[::[1,-1][h<0]]),'#'*(w*16or 1)][h==0]

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

আরনাউল্ডের পদ্ধতির উপর পাইথোনিক রিফ ।

ইসস! এখন সমস্ত প্রান্তের অবস্থার জন্য কাজ করে ...



2

পাওয়ারশেল, 174 170 বাইট

আরনাউল্ডের জাভাস্ক্রিপ্ট দ্বারা অনুপ্রাণিত

param($w,$h)('CGCCCAGIQQACDDDD'[((0..15),(15..0))[$h-lt0]],31)[!$h]|%{$n=+$_
,(-join(4..0+1..4|%{,' #'[($n-shr$_)%2]*[Math]::Abs($w)}),'#')[!$w]*[Math]::Abs(($h,1)[!$h])}

বর্ণহীন, ব্যাখ্যা এবং স্ক্রিপ্টযুক্ত পরীক্ষা:

<#

Script uses 5 bits of integer as 5 left chars of a line of a sheriff
Script ignores other bits in this integer, so we can use 6 bit to take a ASCII letter
    ##.         1 00011     C
   ###..        1 00111     G
    ##.         1 00011     C
    ##.         1 00011     C
    ##.         1 00011     C
     #          1 00001     A
   ###..        1 00111     G
  #  #  .       1 01001     I
 #   #   .  --> 1 10001 --> Q
 #   #   .      1 10001     Q
     #          1 00001     A
    ##.         1 00011     C
   #   .        1 00100     D
   #   .        1 00100     D
   #   .        1 00100     D
   #   .        1 00100     D

#>

$f = {

param($w,$h)
(
    'CGCCCAGIQQACDDDD'[             # 5 bits of each char correspond to 5 left symbols of line of sheriff.
        ((0..15),(15..0))[$h-lt0]], # forward or reverse sequence of chars
    31                              # or sequence of one element = 11111
)[!$h]|%{                           # choose a sequence and for each
    $n=+$_                          # integer or ASCII code
    ,(  -join(
            4..0+1..4|%{            # loop on bit range 4..0 and append fliped range 1..4
                ,' #'[($n-shr$_)%2]*[Math]::Abs($w)
            }                       # returns space or # depend on bit, repeat $w times
        ),
        '#'                         # returns # for $w equal 0
    )[!$w]*[Math]::Abs(($h,1)[!$h]) # choose a sheriff line, repeat $h times
}

}

@(
    ,(1,0)
    ,(0,1)
    ,(1,-1)
    ,(0,0)
    ,(1,1)
    ,(0,0)
    ,(-2,-1)
    ,(0,0)
    ,(2,2)
) | % {
    $w,$h = $_
    $r = &$f $w $h
    $r
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.