আপনার চেয়ার বিশ্লেষণ


11

এই চ্যালেঞ্জটি আপনার চেয়ার অ্যাডজাস্টের উপর ভিত্তি করে ।

চ্যালেঞ্জ

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

উদাহরণ

O
|
|
| _
| |
|_|_
  |
  |
  O

5,3,2,2,1

O
|  _
|  |
|__|__
   |
   |
 __|__
 OOOOO

3,5,2,3,5

O
|      _
|______|______
 ______|______
 OOOOOOOOOOOOO

2,13,1,1,13

চেয়ার অংশ

চেয়ারের বিভিন্ন উপাদান রয়েছে:

O  <- Headrest
|
|  <- Backrest
|  _  <- Armrest
|  |
|__|__ <- Seat
   |  
   |   <- Leg
  _|_
  OOO  <- Wheels

বিস্তারিত চেয়ার বিবরণ

চেয়ারের অংশগুলি হ'ল:


হেডরেস্ট: ব্যাকরেস্টের উপরে সর্বদা একটি হেডরেস্ট থাকবে

O
|

পিঠ: সংখ্যা |হয় পিঠ উচ্চতা

O
|
|

আসন: সংখ্যা _হয় আসন প্রস্থ , সেখানে একটি |Armrest জন্য মাঝখানে।

__|__

চেয়ার: সংখ্যা |হয় Armrest উচ্চতা । এটি আসনের মাঝখানে sertedোকানো হবে।

_
|
|

পা: সংখ্যা |হয় পা উচ্চতা

|
|

চাকা: চাকাগুলি পায়ের নীচে থাকে। যদি তারা একের বেশি হয় তবে কেন্দ্রের চাকা ব্যতীত _অন্যগুলির উপরের লাইনে থাকবে ।

_ _
OOO

আউটপুট

একটি চেয়ার দেওয়া হয়েছে, আপনি বিভিন্ন ভেরিয়েবল আউটপুট হবে।

আউটপুট নিম্নলিখিত ক্রমে হওয়া উচিত:

  1. ব্যাকরেস্ট উচ্চতা
  2. আসনের প্রস্থ সর্বদা বিজোড়
  3. আর্মরেস্ট উচ্চতা সর্বদা ব্যাকরেস্ট উচ্চতার চেয়ে কম
  4. লেগ উচ্চতা
  5. চাকার গণনা সর্বদা আসনের প্রস্থের চেয়ে কম বা সমান এবং সর্বদা বিজোড়

আউটপুটটিতে একটি অনুবর্তনযোগ্য নতুন লাইন থাকতে পারে বা এটি কোনও ফাংশন হলে অ্যারে / তালিকা আকারে থাকতে পারে।

লিডারবোর্ড

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেম্পলেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি আলাদাভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

আর্মরেস্ট কি মাপা হয়?
জে আতকিন

উত্তর:


3

লুয়া, 187 বাইট

আমি মনে করি আমি এটি আরও কিছুটা গল্ফ করতে সক্ষম হতে পারি তবে আমি এই মুহূর্তে এটি ভাল বলে মনে করি। এছাড়াও, যদি আউটপুটটি কমা-বিভাজিত হওয়া দরকার হয় তবে আমি এটি ঠিক করতে পারি, তবে এটি এখনও প্রয়োজনীয়তাগুলি মেথিংকে পূরণ করে।

এছাড়াও, ইনপুট একবারে এক লাইনে খাওয়ানো হয়। চাকার ইনপুট হওয়ার পরে, ইনপুট চূড়ান্ত করতে খালি লাইন দিয়ে এন্টার টিপুন।

c={}i=1t=""while c[i-1]~=""do c[i]=io.read():gsub("%s+","")t=t..c[i]a=(not a and c[i]:find("_")and i or a)s=(not s and c[i]:find("_|_")and i or s)i=i+1 end print(s-1,c[s]:len()-1,s-a,#c-s-2,c[#c-1]:len())

Ungolfed

c={}
i=1
while c[i-1]~=""do 
    c[i]=io.read():gsub("%s+","")          --remove spaces
    a=(not a and c[i]:find"_"and i or a)   --armrest position
    s=(not s and c[i]:find"_|_"and i or s) --seat position
    i=i+1
end
print(s-1, c[s]:len()-1, s-a, #c-s-2, c[#c-1]:len())

(অবস্থানগুলি উপরে থেকে নীচে পরিমাপ করা হয়, সুতরাং শীর্ষ 'ও' অবস্থান 1 এবং চাকাগুলি বৃহত্তম অবস্থান।

  • ব্যাকরেস্ট উচ্চতা সিট বিয়োগের একের অবস্থান, শীর্ষে 'ও' এর জন্য ক্ষতিপূরণ দেয়।
  • আসনের আকারটি সিটের অবস্থান মাইনাস একের স্ট্রিংয়ের দৈর্ঘ্য, ব্যাকরেস্টের জন্য ক্ষতিপূরণ দেয়।
  • আর্মরেস্টের উচ্চতা হ'ল আসন বিয়োগের অবস্থানটি আর্মরেস্টের অবস্থান।
  • লেগের উচ্চতা হ'ল চেয়ারের উচ্চতা হ'ল #cসিট বিয়োগের অবস্থানের চাকা এবং আসনটি ক্ষতিপূরণ করার জন্য compens
  • চাকা গণনা চূড়ান্ত স্ট্রিং দৈর্ঘ্য।

3

গ্রোভি, 161 বাইট !!!

হ্যাঁ!! শেষ নেই !!

f={s->a=s.split(/\n/)
b=a.findIndexOf{it.contains('|_')}
d=b-a.findIndexOf{it.contains('_')}
print"$b,${a[b].count('_')+1},$d,${a.size()-b-2},${s.count('O')-1}"}

Ungolfed:

f={String s ->
    split = s.split(/\n/)
    bottomOfChairBack = split.findIndexOf {it.contains('|_')}
    armHeight = bottomOfChairBack-split.findIndexOf {it.contains('_')}
    width = split[bottomOfChairBack].count('_')+1
    height = split.size() - bottomOfChairBack - 2

    wheelCount = s.count('O')-1
    return [bottomOfChairBack, width, armHeight, height, wheelCount]
}

অব্যক্ত প্রোগ্রামের পরীক্ষা:

assert f('''O
|
|
| _
| |
|_|_
  |
  |
  O''') == [5, 3, 2, 2, 1]

assert f('''O
|  _
|  |
|__|__
   |
   |
 __|__
 OOOOO''') == [3,5,2,3,5]

assert f('''O
|  _
|  |
|__|__
   |
   |
 __|__
 OOOOO''') == [3,5,2,3,5]

assert f('''O
|      _
|______|______
 ______|______
 OOOOOOOOOOOOO''') == [2,13,1,1,13]

2

পাইথ, 57 54 53 50 বাইট

সম্ভবত আরও গল্ফ করা যেতে পারে। -3 বাইট একক অক্ষর স্ট্রিং ট্রিক জন্য ইস্যাক করার জন্য ধন্যবাদ ।

=kjb.z
=H/k+b\|
-/k\_=G-/k\O2
--/k\|H=Nt/k+bd
N
hG

ব্যাখ্যা:

=kjb.z
=k              Assign k
     z          Input
  jb.           Join list by newlines

=H/k+b\|
=H              Assign H
  / +b\|        Count occurrences of "\n|"
   k            In input
                (Implicit: print backrest height)

-/k\_=G-/k\O2
     =G         Assign G
       -/k\O2   The number of wheels minus 1
-/k\_           Count the number of "_"
                (Implicit: print seat width)

--/k\|H=Nt/k+bd
       =N       Assign N
          /k+bd Count the number of lines starting with " "
         t      Subtract 1 (N is now the leg height)
  /k\|          Count the number of "|"
 -    H         Subtract the "|" for the backrest
-               Subtract leg height
                (Implicit: print armrest height)

N               Print leg height

hG              Print the number of wheels

1
এক-বর্ণের স্ট্রিং তৈরি করতে, ব্যবহার করুন \। সুতরাং "_"=\_
isaacg

খুব, কোনওভাবেই আমি এটিকে পরাজিত করতে যাচ্ছি না;)
জে আত্কিন

2

পার্ল, 93 + 2 = 95 90 + 1 = 91 83 + 1 = 84 বাইট

স্পষ্টতই আউটপুটটির কমা-বিচ্ছেদ প্রয়োজন হয় না

ডাকা সঙ্গে perl -n chair.pl chairInput(1B পতাকা শাস্তি)।

END{print$b,2+$u-$o,$a,$.-$b-2,$o-1}$u+=s/_//g;$o+=s/O//g;s/^\|//&&$b++&&/\|/&&$a++

Ungolfed:

END{         # Put the END block first to save 1 ;
    print
        $b,   
    2+$u-$o,
    $a,
    $.-$b-2, # $. is the number of lines total
    $o-1
}
$u+=s/_//g; # count _s incrementally
$o+=s/O//g; # count Os incrementally
s/^\|// && $b++ # it's backrest if it starts with |
    && /\|/ && $a++ # and it's armrest if it has another one

পূর্ববর্তী সংস্করণ:

সাথে দাওয়াত perl -0n chair.pl < chairInput

s/^\|//&&$b++?/\|/&&$a++:$h++for split"
",$_;$,=",";print$b,2+s/_//g-($o=s/O//g),$a,$h-3,$o-1

ব্যাখ্যা:

s/^\|// && $back++   # the backrest is all lines starting with |
    ? /\|/ && $arm++ # the armrest is all of those lines with another |
    : $height++      # otherwise it counts for the seat height
    for split"
",$_;       # literal newline for 1 byte saved
$,=",";     # output separator
print
    $back,
    2+s/_//g-($o_count=s/O//g),  # you can find the seat size
                                 # from the different between the number
                                 # of Os and _s
    $arm,
    $height-3,
    $o_count-1

1

পাইথন 3, 160 158 বাইট

এই কোডটি কেবলমাত্র নিম্নলিখিত শর্তে কাজ করে: 1) armrest height > 0অন্যথায় _গণনাটি ভেঙে যায় এবং 2) seat width > 1অন্যথায় আর্মরেস্ট প্রস্থ -1 আসনটি ব্লক করে এবং _গণনা বিরতি দেয়।

def f(s):
 a=s.split("\n");x=[];y=[];l=len(a)
 for i in range(l):
  m=a[i].count("_")
  if m:x+=i,;y+=m,
 return x[1],y[1]+1,x[1]-x[0],l-x[1]-2,s.count("O")-1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.