শেপ শনাক্তকরণ প্রোগ্রাম Program


25

আপনার কাজটি এমন একটি প্রোগ্রাম তৈরি করা যা ইনপুটটির আকারটি সনাক্ত করে। চিহ্নিত করা আকারগুলি নিম্নলিখিত যে কোনও একটি হতে পারে:

বর্গক্ষেত্র

বর্গ হিসাবে চিহ্নিত করার জন্য, উত্সটিতে অবশ্যই সমস্ত সমান দৈর্ঘ্যের লাইন এবং লাইন প্রতি অক্ষর হিসাবে সমান সংখ্যক রেখা থাকতে হবে (নিউলাইন অক্ষর বাদ দেওয়া হয়নি)। একটি alচ্ছিক পেছনের নতুন লাইন গ্রহণযোগ্য।

$_='
$_="
$_"'
;say

আয়তক্ষেত্র

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

$_=
"no
t a
squ
are
";#

$_="but it
is still a
consistent
shape!";##

ত্রিভুজ

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

$
_=
"So
this
"."".
shape;

$_="or
even,
this
way
!!
"

জগাখিচুড়ি

উপরোক্ত অনুযায়ী সামঞ্জস্যপূর্ণ ফর্ম্যাট অনুসরণ না করে এমন কিছু, অবশ্যই জগাখিচুড়ি হিসাবে চিহ্নিত করতে হবে।

বিধি

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

"আপনার উত্স কোডটিও উপরের আকারগুলির একটি মেনে চলতে হবে" এর অর্থ কী একটি লাইনার ঠিক আছে?
tsh

1
@ All shapes must have a height and width of >= 2.
tsh

1
ইনপুট একটি অ্যারে হতে পারে? উদাহরণস্বরূপ, একটি বর্গ ['abc','cfd','fgh']?
লুইস ফিলিপ দে জেসুস মুনোজ

1
@ রিসার্সিভ আপডেট হয়েছে, আপনাকে ধন্যবাদ!
ডম হেস্টিংস

3
আপনি আমাকে বলছেন আমার সোর্স কোডটি কোনও গোলমাল হতে পারে না? কেন না?!?!
এনএইচ।

উত্তর:


9

জেলি , 35 বাইট

L€ṀR,Ṛ$ċƲȧ3
L€,;¥LE€S+Ç
ỴµZL«L>1ȧÇ 

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

0= মেস
1= আয়তক্ষেত্র
2= বর্গ
3= ত্রিভুজ


আপনার শেষ লাইনের স্থানটি কি আপনার কোড ব্যবহার করে? বা "আয়তক্ষেত্র" মানদণ্ড পূরণের জন্য কেবল প্যাডিং?
ব্র্যাডিসি

@ ব্র্যাডসি উত্তরোত্তর। আমার সম্ভবত একটি ব্যাখ্যা যুক্ত করা উচিত।
এরিক দি আউটগল্ফার

7

ব্র্যাচল্যাগ , 45 বাইট

lᵐ{≥₁|≤₁}o{l>1&t>1&}↰₃
lg,?=∧1w|=∧2w|t⟦₁≡?∧3w

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

কোডটি একটি আয়তক্ষেত্র (এটি আমার পর্দায় যেভাবে উপস্থাপিত হয় তা সত্ত্বেও)। আউটপুট: বর্গক্ষেত্রের জন্য 1, আয়তক্ষেত্রের জন্য 2, ত্রিভুজটির জন্য 3, এবং গণ্ডগোলের জন্য কিছুই নেই


ব্যাখ্যা:

lᵐ{≥₁|≤₁}o{l>1&t>1&}↰₃
lg,?=∧1w|=∧2w|t⟦₁≡?∧3w

lᵐ                        Get the length of each string
  {     }                 Verify 
   ≥₁                     The list is non-increasing
     |                    or...
      ≤₁                  The list is non-decreasing
         o                Sort it to be non-decreasing
          {        }      Verify
           l>1            The number of lines is greater than 1
              &           and...
               t>1&       The longest line is longer than 1 character
                    ↰₃    Call the following

lg,?                      Join the number of lines with the line lengths
    =∧1w                  If they are all equal, print 1 (Square)
         |=∧2w            Or if just the line lengths are equal, print 2 (Rectangle)
              |t⟦₁         Or if the range [1, 2, ... <longest line length>]
                  ≡?       Is the list of lengths
                    ∧3w    Print 3 (triangle)
                           Otherwise print nothing (mess)

7

জাভা 10, 231 221 219 217 213 211 207 বাইট

s->{var a=s.split("\n");int r=a.length,l=a[0].length(),R=0,i=1,L,D;if(r>1){for(L=a[1].length(),D=L-l;++
i<r;R=L-a[i-1].length()!=D?1:R)L=a[i].length();R=R<1?D==0?r==l?1:2:D>-2&D<2&(l<2|L<2)?3:0:0;}return R;}

ফাংশন নিজেই একটি আয়তক্ষেত্র।
1= স্কোয়ার; 2= আয়তক্ষেত্র; 3= ত্রিভুজ; 0= মেস।

-14 বাইটস @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

ব্যাখ্যা:

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

s->{                        // Method with String parameter and integer return-type
  var a=s.split("\n");      //  Input split by new-lines
  int r=a.length,           //  Amount of lines
      l=a[0].length(),      //  Length of the first line
      R=0,                  //  Result-integer, initially 0
      i=1,                  //  Index integer, starting at 1
      L,D;                  //  Temp integers
  if(r>1){                  //  If there are at least two lines:
    for(L=a[1].length(),    //   Set `L` to the length of the second line
        D=L-l;              //   And set `D` to the difference between the first two lines
        ++i<r;              //   Loop over the array
        ;                   //     After every iteration:
         R=L-a[i-1].length()//     If the difference between this and the previous line
          !=D?              //     is not equal to the difference of the first two lines:
           1                //      Set `R` to 1
          :                 //     Else:
           R)               //      Leave `R` the same
      L=a[i].length();      //    Set `L` to the length of the current line
  R=R<1?                    //   If `R` is still 0:
     D==0?                  //    And if `D` is also 0:
      r==l?                 //     And the amount of lines and length of each line is equal
       1                    //      It's a square, so set `R` to 1
      :                     //     Else:
       2                    //      It's a rectangle, so set `R` to 2
     :D>-2&D<2&             //    Else-if `D` is either 1 or -1,
      (l<2|L<2)?            //    and either `l` or `L` is 1:
       3                    //     It's a triangle, so set `R` to 3
    :0:0;}                  //   In all other cases it's a mess, so set `R` to 0
  return R;}                //  Return the result `R`

1
: 221 বাইট জন্য ফিক্সড s->{var a=s.split("\n");int S=a.length,l=a[0].length(),L,D,b=0,i=1;if(S<2)return 0;for(L=a[1].length(),D=L-l; b<1&++i<S;)if((L=a[i].length())-a[i-1].length()!=D)b=1;return b<1?D==0?S==l?1:2:D==-1|D==1?l==1|L==1?3:0:0:0;}(পরে ডবল স্থান var, লাইন বিরতির পর D=L-l;
অলিভিয়ের Gregoire

@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ এবং আমি পরিবর্তন করে আরও দুটি বাইট golfed D==-1|D==1করতে D>-2|D<2। এটি l==1|L==1কিছু এবং কিছু বিটওয়াইজ অপারেশনগুলির সাথে আরও গল্ফযোগ্য হতে পারে তবে এটি আমার দক্ষতা নয়।
কেভিন ক্রুইজসেন

1
207 বাইট: s->{var a=s.split("\n");int r=a.length,l=a[0].length(),L,D,b=0,i=1;if(r>1){for(L=a[1].length(),D=L-l;++ i<r;b=L-a[i-1].length()!=D?1:b)L=a[i].length();b=b<1?D==0?r==l?1:2:D>-2&D<2&(l<2|L<2)?3:0:0;}return b;}(বিরতি পরে D=L-l;++)। লুপ এবং বিবৃতিটি পরে একীভূত করে এখনও গল্ফযোগ্য, তবে এখনই আমি দেখতে পাচ্ছি না।
অলিভিয়ার গ্রাগোয়ার


6

জেলি , 32 27 বাইট

,U⁼€JẸ,E;SƲ$
ZL«L’aL€Ç$æAƝ

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

এখন লাইনগুলির একটি তালিকাতে ইনপুট নেওয়া এবং স্যুইচ >1×করা ’aএবং পরিবর্তে SƲপরে ব্যবহার করা । এগুলি আমাকে দুটি লাইনে ঘন করার অনুমতি দেয় এবং আমি মোট 5 টি বাইট সংরক্ষণ করেছি। নিম্নলিখিত মানগুলি পূর্বের মতোই।L€FLƲƊ

[0.0, 0.0]= মেস
[0.0, 1.5707963267948966]= আয়তক্ষেত্র
[0.0, 0.7853981633974483]= বর্গ
[1.5707963267948966, 0.0]= ত্রিভুজ


ZL«Lসর্বনিম্ন উচ্চতা এবং প্রস্থ পায় এবং এটি থেকে 1 টি বিয়োগ করে। Çদ্বিতীয় লিঙ্কটি কল করে এবং শেষে যদি ইনপুটটি একক লাইন হয় তবে ফলাফলটি Çলজিকাল অ্যান্ডড হয়ে যায় পূর্ববর্তী সংখ্যার সাথে যদি কেবলমাত্র একটি একক লাইন থাকে তবে আউটপুট হবে [0.0, 0.0]

দ্বিতীয় লিঙ্কে: ,Uএর বিপরীতে জোড় যুক্ত লাইন দৈর্ঘ্যের একটি তালিকা উত্পন্ন করে। Jহয় range(number of lines)এবং ⁼€তাদের প্রতিটি ফলাফলের সমান কিনা তা পরীক্ষা করে J(যে কোনও) ইনপুটটি ত্রিভুজ হলে 1 টি দেয়।

E সমস্ত লাইনের দৈর্ঘ্য সমান কিনা তা পরীক্ষা করে (আয়তক্ষেত্র / বর্গক্ষেত্র)।

SƲএকটি সঙ্গে $একটি একক একসংখ্যা চেক মধ্যে গোষ্ঠী তাদের কিনা অক্ষরের মোট সংখ্যা একটি বর্গক্ষেত্র সংখ্যা।

সুতরাং দ্বিতীয় লিঙ্কের শেষে আমাদের [[a,b],c]যেখানে প্রতিটি সংখ্যা রয়েছে 0বা 1ইনপুটটি ত্রিভুজ, আয়তক্ষেত্রাকার এবং যথাক্রমে বর্গক্ষেত্রের সংখ্যা রয়েছে কিনা তা নির্দেশ করে have

তবে অবিচ্ছিন্ন সংখ্যার উপাদানগুলির একটি বর্গ সংখ্যার ইনপুটটি বোঝায় না যে একটি অগোছালো ইনপুট পছন্দ

a3.
4

উপাদানগুলির একটি বর্গ সংখ্যা রয়েছে তবে বর্গাকার নয়।

এখানেই æA(আর্টকান 2) আসে 0æA0= 0æA1== == 0। অন্য কথায়, যদি ইনপুটটিতে বর্গ সংখ্যার উপাদান থাকে তবে এটি একটি আয়তক্ষেত্র না হয়, তবে এটি কোনও বর্গ নয়। এটি করার আরও অবশ্যই স্পষ্ট উপায় আছে তবে আমাদের কীভাবে ভাবতে হবে যখন আমাদের কাছে বাইট রয়েছে এবং আমাদের ধারাবাহিকভাবে স্বেচ্ছাচারিত আউটপুট অনুমোদিত হয় what

উল্লেখ্য আমি পূর্বে ব্যবহার করছিলেন æA/পরিবর্তে æAƝ(এবং ,একটি পরিবর্তে ;কিন্তু দ্বিতীয় লিঙ্কে) ত্রিভুজ উপাদান এবং ঐ যে না বর্গ নম্বর আছে কিন্তু তারা স্পষ্টত একই জিনিস হিসাবে গণনা করা উচিত যে মধ্যবর্তী সাবেক পদ্ধতি আলাদা।


আমি ভাবছিলাম সংখ্যার দিকে তাকিয়ে ছিলাম, তারা অস্পষ্টভাবে পরিচিত বলে মনে হচ্ছে ...
ডম হেস্টিংস

নিবন্ধন করুন স্কোয়ার-সংখ্যা-উপাদান-মিশ্রণগুলি থেকে স্কোয়ারগুলি পার্থক্য করতে আমার সমস্যা arctan2হয়েছিল এবং আমার যা প্রয়োজন তা ঠিক তাই ছিল।
dylnan

1
মজার বিষয় যে কোনও উত্স বিধিনিষেধ না থাকলে এটি আরও সংক্ষিপ্ত হবে বলে আমি মনে করি না
dylnan

... আপনি কি নিশ্চিত যে এটি বৈধ? জেলিতে যেমন নিউলাইন 0x7F, 0x0A নয়।
ব্যবহারকারী 202729

@ ডোমহাস্টিংস এটি কি বৈধ? (উপরের কারণটি দেখুন)
ব্যবহারকারী 202729

4

জাভা 10, 274 323 298 229 বাইট

প্রথম ত্রিভুজ জমা।

s
->
{  
var 
a=s. 
split 
("\n");
int i,l=
a.length,
c,f=a[0]. 
length(),r=
l<2||f<2&a[1
].length()<2?
0:f==l?7:5;var
b=f==1;for(i=1;
i<l;){c=a[i++]. 
length();r&=c!=f?
4:7;r&=(b&c!=f+1)|
(!b&c!=f-1)?3:7;f=c
;}return r;}        

0 জগাখিচুড়ি

1 আয়তক্ষেত্র

3 বর্গক্ষেত্র

4 ত্রিভুজ

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

এটি আরও কিছুটা গল্ফ করার জন্য একাধিকবার সম্পাদিত।

অবশ্যই আমি এটিকে আয়তক্ষেত্রে রূপান্তরিত করে অনেকগুলি বাইট সংরক্ষণ করতে পারি ( 281 267 259 200 বাইট, এখানে দেখুন )।

সনাক্তকরণের ফলাফলটি বিটওয়াইড এবং ব্যবহার করে চালিত হয়, বিটমাস্কটি নিম্নরূপ:

1        1      1
triangle square rectangle

অবরুদ্ধ সংস্করণ:

s -> {
    var lines = s.split("\n"); // split input into individual lines
    int i, // counter for the for loop
    numLines = lines.length, // number of lines
    current, // length of the current line
    previous = lines[0].length(), // length of the previous line
    result = numLines < 2 // result of the identification process; if there are less than two lines
    || previous < 2 & lines[1].length() < 2 // or the first two lines are both shorter than 2
    ? 0 : previous == numLines ? 7 : 5; // it's a mess, otherwise it might be a square if the length of the first line matches the number of lines
    var ascending = previous == 1; // determines whether a triangle is in ascending or descending order
    for(i = 1; i < numLines; ) { // iterate over all lines
         current = lines[i++].length(); // store the current line's length
        result &= current != previous ? 4 : 7; // check if it's not a rectangle or a square
        result &= (ascending & current != previous+1)|(!ascending & current != previous-1) ? 3 : 7; // if the current line is not one longer (ascending) or shorter (descending) than the previous line, it's not a triangle
        previous = current; // move to the next line
    }
    return result; // return the result
}

1
পিপিসিজিতে আপনাকে স্বাগতম!
স্টেডিবক্স

হুরারে ত্রিভুজ! ধন্যবাদ!
ডম হেস্টিংস

হাই, পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর। আমি আমার উত্তরটিকে ত্রিভুজ করার আগেও চেষ্টা করেছি, তবে আয়তক্ষেত্রের তুলনায় এটির ব্যয় অনেক বেশি হবে এবং কিছু মূল-শব্দ আমার প্রাথমিক উত্তরেও কিছুটা দীর্ঘ ছিল। :) যদিও দুর্দান্ত উত্তর, আমার কাছ থেকে +1। এবং আমি সম্পূর্ণ পোস্টে হাইলাইট যোগ করার জন্য আপনার পোস্ট সম্পাদনা করার স্বাধীনতা নিয়েছি, সুতরাং আপনার অলংগ সংস্করণে দেওয়া মন্তব্যগুলি পড়া সহজ read উপভোগকর তোমার থাকা!
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন উর্ধ্বতন এবং সম্পাদনার জন্য ধন্যবাদ, এটি এখন আরও ভাল দেখাচ্ছে। আমার উত্তরটি এটিকে একটি আয়তক্ষেত্র, 281 বাইটে পরিণত করে সংক্ষিপ্ত করা যেতে পারে। তবে তাতে মজা কোথায়?
ওবালান্স

3

জাভাস্ক্রিপ্ট 125 বাইট

_=>(g=(l=_.split('\n').map(a=>a.length)).
length)<3?0:(r=l.reduce((a,b)=>a==b?a:0))
?r==g?2:1:l.reduce((a,b)=>++a==b?a:0)?3:0

0 = Mess
1 = Rectangle
2 = Square
3 = Triangle

fa=_=>(g=(l=_.split('\n').map(a=>a.length)).length)<3?0:(r=l.reduce((a,b)=>a==b?a:0))?r==g?2:1:l.reduce((a,b)=>++a==b?a:0)?3:0

var square = `asd
asd
asd`

var rectangle = `asd
asd
asd
asd
asd
asd`

var triangle = `asd
asdf
asdfg
asdfgh`

var mess = `asd
dasdasd
sd
dasasd`

console.log(fa(square), fa(rectangle), fa(triangle), fa(mess))


3
বাইট গণনাটি 125 (নতুনলাইন সহ)
হারমান এল

ত্রিভুজ একটি 1 যেতে হবে? 3456 নয়
l4m2

@ l4m2 আপনার মানে কি?
লুইস ফেলিপ দে জেসুস মুনোজ

2
ত্রিভুজ সবসময় 1 থেকে শুরু করা উচিত?
লুইস ফেলিপ দে জেসুস মুনোজ

3
আমি মনে করি @ l4m2 কী নির্দেশ করছে তা হ'ল ত্রিভুজটির অবশ্যই তার প্রথম বা শেষ লাইনে একটি মাত্র অক্ষর থাকতে হবে, অন্যথায় এটি "গণ্ডগোল"।
শেগি


3

পিএইচপি, 195 205 বাইট

<?$a=$argv[1];$r=substr($a,-2,1)=="\n"?strrev($a):$a;foreach(explode("\n",$r)as$l){$s=strlen($l);$x[$s
]=++$i;$m=$i==$s?T:M;}$z=count($x);echo$i*$z>2?$z==1&&key($x)==$i?S:($z==1&&$i>2?R:($i==$z?$m:M)):M;?>

উল্টো ত্রিভুজ এটিতে একটি ব্যয়বহুল 56 বাইট যুক্ত করে!

ফলাফলগুলি এস, আর, টি, এম হয়

ডোম হেস্টিংসকে ধন্যবাদ কয়েক বাইট সংরক্ষণ করে।

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

কয়েকটি সমস্যা এখনই স্থির করা হয়েছে ... টেস্ট রান এটি তৈরি করে।

$_="
$_="
$_""
;say

RESULT:S
=============
$_=
"no
t a
squ
are
";#

RESULT:R
=============
$
_=
"So
this
"."".
shape;

RESULT:T
=============
$_="or
even,
this
way
!!
"

RESULT:T
=============
as
smiley
asd
A

RESULT:M
=============
X

RESULT:M
=============
XX

RESULT:M
=============
cccc
a
aa
cccc

RESULT:M
=============

ওমিট ?>ঠিক ঠিক থাকতে হবে
tsh

এই আসতে বলে মনে হয় Tজন্য cccc\na\naa\ncccc অনলাইনে এটিকে পরখ করে!
ডম হেস্টিংস

3

পার্ল 6 , 81 বাইট

{.lines>>.chars.&{($_==.[0],3)[2*(2>.max
)+($_ Z- .skip).&{.[0].abs+.Set*2+^2}]}}

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

রিটার্নস Trueবর্গাকার, জন্য Falseআয়তক্ষেত্র জন্য, 3ত্রিভুজ জন্য, Nilবিশৃঙ্খলার জন্য।


খুব ভাল, বিশেষত, আপনি কি এটি কিছুটা আনপ্যাক করে মনে করবেন $_ Z- .skip?
ফিল এইচ

3

স্ট্যাক্স , 39 বাইট

L{%m~;:-c:u{hJchC; 
|mb1=-C;%a\sI^^P}M0

চালান এবং অনলাইন ডিবাগ!

এখন পর্যন্ত সংক্ষিপ্ততম ASCII- উত্তর।

0 - মেস
1 - আয়তক্ষেত্র
2 - বর্গ
3 - ত্রিভুজ

ব্যাখ্যা

সমাধানটি নিম্নলিখিত সত্যটিকে ব্যবহার করে: প্রোগ্রামটির সম্পাদনায় যদি কিছু স্পষ্টভাবে মুদ্রিত হয় তবে কোনও অন্তর্নিহিত আউটপুট তৈরি হয় না। অন্যথায়, সম্পাদনা শেষে স্ট্যাকের শীর্ষটি সুস্পষ্টভাবে আউটপুট হয়।

L{%m~;:-c:u{hJchC;|mb1=-C;%a\sI^^P}M0
L                                        Collect all lines in an array
 {%m                                     Convert each line to its length
    ~;                                   Make a copy of the length array, put it on the input stack for later use
      :-                                 Difference between consecutive elements.
                                         If the original array has only one line, this will be an empty array
        c:u                              Are all elements in the array the same?
                                         Empty array returns false
           {                      }M0    If last test result is true, execute block
                                         If the block is not executed, or is cancelled in the middle, implicitly output 0
            hJ                           The first element of the difference array squared (*)
              chC                        Cancel if it is not 0 or 1
                 ;|m1=                   Shortest line length (**) is 1
                      -                  Test whether this is the same as (*)
                                         Includes two cases:
                                             a. (*) is 1, and (**) is 1, in which case it is a triangle
                                             b. (*) is 0, and (**) is not 1, in which case it is a square or a rectangle
                        C                Cancel if last test fails
                         ;%              Number of lines
                           a\            [Nr. of lines, (*)]
                             I           Get the 0-based index of (**) in the array
                                         0-> Square, 1->Triangle -1(not found) -> Rectangle
                              ^^P        Add 2 and print

3

হাস্কেল , 113 107 103 101 বাইট

((#)=<<k).map k.lines;k=length;1#x=0;l#x|x==[1..l]
  ||x==[l,l-1..1]=3;l#x=k[1|z<-[l,x!!0],all(==z)x]

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

মেস, আয়তক্ষেত্র, বর্গক্ষেত্র এবং ত্রিভুজ যথাক্রমে 0, 1, 2 এবং 3 প্রদান করে।

সম্পাদনা করুন: -২ বাইট লিনকে ধন্যবাদ !


3

05 এ বি 1 ই , 35 29 27 বাইট

ম্যাজিক অক্টোপাস উরনের জন্য 8 টি বাইট সংরক্ষণ করা হয়েছে

DgV€g©ZU¥ÄP®Y
QP®ËJCXY‚1›P*

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

0= মেস
4= ত্রিভুজ
1= আয়তক্ষেত্র
3= বর্গক্ষেত্র


এটি কিছু অগোছালো কোডে ব্যর্থ বলে মনে হচ্ছে: এটি অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস

@ ডোমহাস্টিংস: এটি ধরার জন্য ধন্যবাদ আমি ভেবেছিলাম যে গল্ফটি কিছুটা ইফিজ ছিল। এখন ঠিক আছে।
Emigna

এটি অনলাইন চেষ্টা করুন! - 19 বাইট - 1 (আয়তক্ষেত্র), 2 (ত্রিভুজ), 5 (স্কোয়ার) এবং 0 (মেস) [বাইনারি সংখ্যা ব্যবহার করে]। LOL সম্ভবত গ্রহণযোগ্য নয়। যদিও 21 এর জন্য gs€g©QP®¥ ÄP®1å&®ËJCএকটি স্পেস চর এবং একটি যুক্ত করতে পারে C
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টপাস ইউরন: এটি এখনও দৈর্ঘ্য / উচ্চতা> = 2 যাচাই করতে হবে তবে এটি এখনও বাইট সংরক্ষণ করতে হবে। বাইনারি থেকে আউটপুট নম্বর নির্মাণের চতুর কৌশল!
এমিগেনা

1
@ ম্যাজিক অ্যাক্টোপাস ইউরন: আমি আমার ডেল্টা এবং বাইনারি কৌশলগুলি আমার মূল সংস্করণে কিছু বাইট সংরক্ষণ করতে ব্যবহার করেছি। এটি আরও কিছুটা পুনর্লিখন সম্ভবত আরও কয়েকজন সঞ্চয় করতে পারে।
এমিলিগা

2

আর , 101 বাইট

"if"(var(z<-nchar(y<-scan(,"",,,"
","")))==0,"if"(length(y)==z,1,2
),"if"(all(abs(diff(z))==1),3,4))

1 = স্কোয়ার
2 = আয়তক্ষেত্র
3 = ত্রিভুজ
4 = এলোমেলো

কোড উপরের কোডে 'নেজিটিভ এককনোলেজ' (ইউ + 0015) বা স্কোয়ারের সাথে ডিল করতে পারে না। যদি ইনপুটটিতে এই বাইট থাকে তবে এই বাইটটি অন্যরকম কিছুতে স্যুইচ করা যেতে পারে।

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


আপনি readLines()পরিবর্তে ব্যবহার করতে পারে scan()?
জিউসেপ্পে

@Giuseppe / খুব কাজে readLines পেতে noob করা যাবে না
Vlo

হুম, দেখে মনে হচ্ছে আপনার file("stdin")এটি কনসোল থেকে পড়ার জন্য নির্দিষ্ট করতে হবে (কোডের পরবর্তী লাইনের চেয়ে)। তার মানে এটি সম্ভবত কম গোলাপী হবে। আহ ভালো.
জিউসেপ্পে

2

শামুক, 29 বাইট

ada7A
.2,lr
?!(t.
rw~)z
.+~o~

আউটপুট কী:

  • 0 - মেস
  • 3 - ত্রিভুজ
  • 6 - আয়তক্ষেত্র
  • 7 - স্কয়ার

এটি উত্স বিন্যাস ছাড়াই 23 বাইট হবে:

zA
.2,dun!(t.rf~)z.+~o~

যে প্রশ্নটি উত্সাহিত হয়েছিল তা পড়ার পর থেকে আমি সবসময় এই ভাষা নিয়ে খেলতে আগ্রহী!
ডম হেস্টিংস

1

ওল্ফ্রাম ভাষা (গণিত) , ১১৯ বাইট a

(x=StringLength/@#~StringSplit~"\n")/.{{1}->3,s~(t=Table)~{
s=Tr[1^x]}:>0,x[[1]]~t~s:>1,(r=Range@s)|Reverse@r:>2,_->3}&

Replace /.অক্ষর অনুসারে লাইন অনুসারে ব্যবহার এবং প্যাটার্ন মিল।Replaceমেলে এমন কোনও নিয়মের প্রথম আরএইচএস বের করে দেবে, সুতরাং আদেশটি 1 টি অক্ষরের ইনপুট, তারপরে স্কোয়ারস, আয়তক্ষেত্র, ত্রিভুজ এবং মেসের জন্য একটি পড়ার মধ্য দিয়ে পরীক্ষা করতে হবে।

বর্গক্ষেত্র = 0, আয়তক্ষেত্র = 1, ত্রিভুজ = 2, জগাখিচুড়ি = 3

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


@ ডোমহাস্টিংস, এটি ঠিক আছে।
কেলি লোডার



1

রুবি , 115 111 বাইট

->s{m=s.split(?\n).map &:size;r=*1..s=m.size;s<2?4:(m|[
]).size<2?m[0]<2?4:s==m[0]?1:2:r==m.reverse||r==m ?3:4}

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

নামবিহীন ল্যাম্বদা। আউটপুট:

  1. বর্গক্ষেত্র
  2. আয়তক্ষেত্র
  3. ত্রিভুজ
  4. জগাখিচুড়ি

এটি এমন কিছুতে ব্যর্থ হয়েছে যা মেস হিসাবে চিহ্নিত করা উচিত: এটি অনলাইনে চেষ্টা করুন!
ডম হেস্টিংস

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.