আকারে লুকালিকে


23

অনুরূপ পরিসংখ্যান

দুটি দিকের আয়তক্ষেত্র একই হয় যদি তাদের পাশের অনুপাত একই হয়।

এই দুটি আয়তক্ষেত্র বিবেচনা করুন; একটি আয়তক্ষেত্র 5 লম্বা লম্বা এবং 11 টি চওড়া প্রশস্ত:

===========
===========
===========
===========
===========

এবং একটি আয়তক্ষেত্র 10 লম্বা লম্বা এবং 22 টি চওড়া প্রশস্ত:

======================
======================
======================
======================
======================
======================
======================
======================
======================
======================

এই আকারগুলি সমান কারণ তাদের পাশের অনুপাত একই। এটা আনুষ্ঠানিকভাবে করা করার জন্য (সঙ্গে h সবচেয়ে কম পাশ হচ্ছে এবং w দীর্ঘতম পাশ হচ্ছে):

h1w1=h2w2

আপনি এটি করতে পারেন:

h1h2=w1w2

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা একটি "প্রধান" আয়তক্ষেত্র এবং কিছু "অন্যান্য" আয়তক্ষেত্র গ্রহণ করে এবং "অন্য" এর মধ্যে "মেইন" এর অনুরূপ প্রিন্ট করে।

ইনপুট

একটি আকার এবং আকারগুলির একটি তালিকা। প্রতিটি আকারে 2 অ-শূন্য ধনাত্মক পূর্ণসংখ্যা থাকে যা আয়তক্ষেত্রের প্রস্থ এবং উচ্চতা নির্দেশ করে। উদাহরণস্বরূপ, এটি:

(4,2), (3,9)

দুটি আয়তক্ষেত্র, একটি 4x2 এবং একটি 3x9 বোঝায়। ইনপুটটির সঠিক ফর্ম্যাটটি আপনার ইচ্ছা অনুযায়ীই হতে পারে।

আউটপুট

"প্রধান" এর অনুরূপ "অন্যান্য" আকারের সূচকগুলি। সূচকগুলি 0- বা 1-ভিত্তিক, পাশাপাশি আউটপুটটির সঠিক বিন্যাস এবং ক্রমগুলি চয়ন করতে পারেন।

নমুনা প্রোগ্রাম

পাইথনে:

main = eval(raw_input()) # The main rectangle.
rects = eval(raw_input()) # The list of rectangles.
similar = set()
for i, rect in enumerate(rects):
    if max(main)*min(rect) == min(main)*max(rect): # Cross-multiply
        # They are similar.
        similar.add(i)

print similar

নমুনা ইনপুট এবং আউটপুট

ইনপুট:

(1, 2)
[(1, 2), (2, 4)]

আউটপুট:

set([0, 1])

ইনপুট:

(1, 2)
[(1, 9), (2, 5), (16, 8)]

আউটপুট:

set([2])

জয়লাভ

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম জমাটি জয়লাভ করে।

নোট

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

ভাসমান পয়েন্ট বিভাগ ব্যবহার করার অনুমতি আছে? চান [1.0 2.0]একটি গ্রহণযোগ্য ইনপুট বিন্যাস হবে?
ডেনিস

@ ডেনিস শর্তযুক্ত যে আপনার নির্বাচিত ভাষার অদ্ভুতভাবে কম ভাসমান পয়েন্ট যথাযথতা নেই এবং তাই পরীক্ষার কেসগুলি ব্যর্থ হয়, এটি ঠিক হওয়া উচিত। ;)
kirbyfan64sos

সূচকগুলির পরিবর্তে আমরা কী প্রকৃত অনুরূপ আকারগুলি আউটপুট দিতে পারি?
orp

@ ইউরোপ নাহ !!! : ডি
kirbyfan64sos

3
সূচকগুলি আউটপুট দেওয়ার আউটপুট ফর্ম্যাটটি কি বাধ্যতামূলক? যেমন একটি পরীক্ষার ক্ষেত্রে [(1,2), (2,4), (1,9), (2,5), (16,8)], কেবল [0,1,4]এবং [1,2,5]অনুমোদিত, বা আমরা আউটপুট [1,1,0,0,1]বা করতে পারি [(1,2), (2,4), (16,8)]?
কেভিন ক্রুইজসেন

উত্তর:



11

পাইথন, 61 বাইট

lambda a,b,l:[i for i,(x,y)in enumerate(l)if x/y in[a/b,b/a]]

হ্যাঁ, আমি লিখতে 9 টি অক্ষর ব্যবহার করছি enumerate। ইনপুট লাগে 1, 2, [(1, 9), (3,6), (2, 5), (16, 8)]। পাইথন 2 এর জন্য, ইনপুট মানগুলি ভাসমান হিসাবে লেখা উচিত।

পাইথন 3 এ একটি চর দীর্ঘতর (62):

def f(a,b,l,i=0):
 for x,y in l:b/a!=x/y!=a/b or print(i);i+=1

আপনার এই বোঝাতে আপত্তি আছে? আমি জানতে চাই কি চলছে
The_Basset_Hound

ইনপুট তালিকার প্রতিটি উপাদানের জন্য @ বাসসাহাউন্ড, iসূচী (x,y)হিসাবে এবং পয়েন্ট হিসাবে বোধগম্যতা আনপ্যাক করে। এটি তখন মান x/yদুটি প্রাথমিক দুটি সংখ্যার ভাগফল ( a/b) বা এর পারস্পরিক ( b/a) এর সমান কিনা তা পরীক্ষা করে । যদি এটি values ​​মানগুলির মধ্যে একটির সমান হয় তবে সেই মানটি iতালিকায় যুক্ত হয়, অন্যথায় এটি বাতিল করা হয়।
FryAmTheEggman

9

সিজেম, 22 20 19 বাইট

{:$::/_0=f=ee::*0-}

উপরেরটি একটি বেনামী ফাংশন যা স্ট্যাক থেকে ভাসমান পয়েন্ট জোড়া (প্রথম জোড়া সুই হয়) এর একক অ্যারে পপ করে এবং বিনিময়ে 1-ভিত্তিক সূচকের অ্যারেটিকে ধাক্কা দেয়।

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

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

:$                e# Sort each pair.
  ::/             e# [a b] -> a/b
     _0=          e# Push a copy of the array and extract the first float (needle).
        f=        e# Check which floats are equal to the needle.
          ee      e# Enumerate the resulting Booleans.
            ::*   e# Multiply each Boolean by its index.
                  e# This yields 0 for the needle (index 0) and for non-matching
                  e# haystack pairs (Boolean 0).
               0- e# Remove all zeroes from the array.

8

হাস্কেল , 48 বাইট

(a!b)l=[i|(i,(x,y))<-zip[0..]l,x/y+y/x==a/b+b/a]

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

এই মত কল (!) 1 2 [(1, 9), (3,6), (2, 5), (16, 8)]

আমার পাইথন উত্তরের একটি কাছের বন্দর । ভাবভঙ্গিzip[0..]l তালিকাটি সূচকগুলি সহ সূচিত করে।

এক্সপ্রেশনটি x/y+y/x==a/b+b/aপরীক্ষা করে যে অনুপাতটি x/yহয় a/bবা b/aযেহেতু ফাংশনটির f(z) = z + 1/zরয়েছে f(z) = f(1/z)এবং অন্য কোনও সংঘর্ষ নেই।


হয়তো hকোনও অপারেটরকে তিনটি যুক্তি নিচ্ছেন? এটি একটি বাইট সংরক্ষণ করতে চাই এবং আমি মনে করি এটি নিয়মের মধ্যেই থাকবে।
ডিফিউয়ার

@ ডিফিউয়ার শ্যুর, এটি অবশ্যই আধুনিক মানের দ্বারা অনুমোদিত তবে এটি I / O এর সাথে কী স্বাধীনতা গ্রহণ করা যেতে পারে তা অস্পষ্ট ছিল।
xnor

7

স্নোম্যান 1.0.2 , 61 টি অক্ষর 61

}vgvgaC"[0-9]+"sM:10sB;aM2aG:AsO:nD;aF;aM0AAgaA*|:#eQ;AsItSsP

খাঁটি গিবিবারিশ (যতক্ষণ না আপনি স্নোম্যানকে জানবেন), ওরফে ঠিক যতটা সম্ভব বিভ্রান্তির ভাষা নকশার লক্ষ্য অনুসারে।

ইনপুট ফর্ম্যাট পোস্টের মতো, আউটপুট ফর্ম্যাটও একই বিয়োগ set(এবং )

অবহেলিত (বা প্রকৃতপক্ষে স্বাক্ষরিত):

}vgvgaC     // read two lines of input, concatenate
"[0-9]+"sM  // use a regex to grab all numbers
:10sB;aM    // essentially map(parseInt)
2aG         // take groups of 2 (i.e. all the ordered pairs)

// now map over each ordered pair...
:
  AsO       // sort
  :nD;aF    // fold with division - with 2 array elements, this is just a[0]/a[1]
;aM

// we now have an array of short side to long side ratios
// take out the first one
0AAgaA      // active vars beg, b=array[0], g=the rest
*|          // store first ordered pair in permavar, bring the rest to top

// select indices where...
:
  #         // retrieve first ordered pair
  eQ        // equal?
;AsI

tSsP  // to-string and output

আমি এটিতে ব্যবহৃত কয়েকটি কৌশল সম্পর্কে আমি গর্বিত:

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

  • :nD;aFবেশ অভিনব এটি কেবল দুটি উপাদানের একটি অ্যারে নেয় এবং প্রথমটিকে দ্বিতীয় দ্বারা ভাগ করে। যা দেখতে খুব সহজ বলে মনে হচ্ছে, তবে এটি স্বজ্ঞাত উপায়ে করা ( a[0]/a[1]স্নোম্যানের মধ্যে অনেক বেশি দীর্ঘ): 0aa`NiN`aA|,nD(এবং এটি ধরে নেওয়া হচ্ছে যে আমাদের অন্যান্য বিদ্যমান ভেরিয়েবলগুলির সাথে জগাখিচির বিষয়ে চিন্তা করতে হবে না)। পরিবর্তে, আমি "ভাঁজ" পদ্ধতিটি "ডিভাইড" এর প্রিডিকেট দিয়ে ব্যবহার করেছি, যা দুটি উপাদানের অ্যারের জন্য একই জিনিস অর্জন করে।

  • 0AAgaAনিখুঁত দেখতে যথেষ্ট, কিন্তু এটি আসলে যা করে তা 0ভেরিয়েবলগুলিতে সংরক্ষণ করা হয়, তারপরে সমস্ত ভেরিয়েবলের চেয়ে তারও বেশি সূচকযুক্ত থাকে (সুতরাং, প্রথমটি বাদে সমস্ত ভেরিয়েবল)। তবে কৌশলটি হ'ল পরিবর্তে AaG(যা মূল অ্যারে এবং এর থেকে মুক্তি পাবে 0), আমি ব্যবহার করেছি AAg, যা উভয়ই রাখে। অ্যারের প্রথম উপাদানটি পেতে এখন আমি aAসূচিপত্র ব্যবহার করে একই0 সাথে এটি ব্যবহারকারীর মোডে ( aAপরিবর্তে aa), সুতরাং এটি পরিত্রাণ পেতে পারে0 খুব এবং মূল বিন্যাস, যা এখন জন্য আবর্জনা হয় আমাদের.

    হায়রে, 0AAgaA*|মূলত একই জিনিস যে GolfScript একটি অক্ষর মধ্যে আছে আছে: (। তবে স্নোম্যান স্ট্যান্ডার্ড অনুসারে আমি এখনও এটি বেশ সুন্দর বলে মনে করি। :)


3

গণিত, 41 বাইট

Position[a=Sort@#;Sort@#/a&/@#2,{x_,x_}]&

ব্যবহার:

Position[a = Sort@#; Sort@#/a & /@ #2, {x_, x_}] &[{1, 2}, {{1, 2}, {2, 5}, {16, 8}}]
(* {{1}, {3}} *)

1
আমি শুধু জানতাম ম্যাথামেটিকা ​​কোনওভাবে উঠে আসতে চলেছে!
kirbyfan64sos

3

পাইথ - 14 বাইট

ভাগফলের তুলনা করে ফিল্টার, তারপরে মানচিত্রগুলি indexOf

xLQfqcFSTcFvzQ

টেস্ট স্যুট


এটি মূল আকারটি সাজায় না, সুতরাং মূল আকারের প্রথম দিকের দৈর্ঘ্য বড় হলে এটি ভুল উত্তর দেবে। এই পরীক্ষার
কেসটি

@ আইস্যাক ভাল পয়েন্ট, ঠিক করবে।
মালটিসেন

উদাহরণস্বরূপ, পুনরাবৃত্তি উপাদানগুলির সাথে ইনপুটগুলি ব্যর্থ হয় 1,2 এবং সঠিক পরিবর্তে [(1, 2), (2, 4), (1, 2)]দেবে । [0, 1, 0][0, 1, 2]
orlp

আমি, এই এক গ্রহণ করতে চান যেহেতু এটি হল সবচেয়ে কম নয়, তবে সমস্যা @orlp সংশোধন তুলনা দিয়েছেন?
kirbyfan64sos

1
@ kirbyfan64sos No
orlp

3

এপিএল (ডায়ালগ ইউনিকোড) , 16 13 বাইট এসবিসিএস

(=.×∘⌽∨=.×)⍤1

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

-3 @nn ধন্যবাদ!

ব্যাখ্যা:

(=.×∘⌽∨=.×)⍤1
(        )    "OR" together...
 =.    =.      ...fold by equality of:
   ×∘⌽         - the arguments multiplied by itself reversed
         x     - the argument multiplied by itself
           1  Applied at rank 1 (traverses)

আউটপুট ফর্ম্যাট একটি বাইনারি ভেক্টর এর মতো 1 1 0 0 1 যার মধ্যে "অন্যান্য" আয়তক্ষেত্রটি দেখতে দেখতে এক-মত।

এপিএল (ডায়ালগ প্রসারিত) , 11 বাইট এসবিসিএস

=/-×⍥(⌈/)¨⌽

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

ব্যাখ্যা:

=/-×⍥(⌈/)¨⌽  takes only a right argument: ⍵, shape: (main (other...))
            two transformations:
  -          - left (L) vectorized negation: -⍵
            - right (R): reverse. (main other) => (other main)
     (⌈/)¨   transformation: calculate the max (since L is negated, it calculates the min)
             (/ reduces over  max)
             this vectorizes, so the "main" side (with only one rect) will get repeated once for each "other" rect on both sides
   ×⍥        over multiplication: apply the transformation to both sides. F(LF(R)
=/           reduce the 2-element matrix (the "main" that's now the side of the "other") to check which are equal

আউটপুট ফর্ম্যাটটি মূল ডায়ালগ উত্তরের সমান।

গল্ফিং + প্রসারিত সাহায্যের জন্য আদমকে ধন্যবাদ Thanks


(=.×∘⌽∨=.×)⍤1
এনজিএন

ধন্যবাদ। প্রথমে এটি পরিদর্শন করার চেষ্টা করবে
ভেন

2

জুলিয়া, 62 বাইট

f(m,o)=find([(t=sort(m).*sort(i,rev=true);t[1]==t[2])for i=o])

দ্য findফাংশন একটি বুলিয়ান ভেক্টর সত্য উপাদানের অবস্থান নির্ণয় করে। .*ভেক্টরগুলির মৌলিক দিকের গুণন সম্পাদন করে।

Ungolfed:

function f(m::Array, o::Array)
    find([(t = sort(m) .* sort(i, rev=true); t[1] == t[2]) for i in o])
end

ব্যবহার:

f([1,2], {[1,9], [2,5], [16,8]})

2

কে 5, 19 বাইট

আমি মনে করি এটি কৌশলটি করবে:

&(*t)=1_t:{%/x@>x}'

জোড়াগুলির একটি তালিকা নেয় যেখানে প্রথমটি "মূল"। প্রতিটি জোড়ের বাছাই করা মাত্রা ভাগ করে অনুপাতকে গণনা করে। মিলে যাওয়া জোড়াগুলির 0-সূচিযুক্ত অবস্থানের একটি তালিকা প্রদান করে। (যুক্তিযুক্তভাবে আমি যে ইনপুট ফর্ম্যাটটি বেছে নিয়েছি তা এটি -1 সূচকযুক্ত করে তোলে - যদি এটি একটিতে অবৈধ ট্যাক হিসাবে বিবেচিত হয়)1+ এটি শুরুতে এবং আমার প্রোগ্রামের আকারে দুটি অক্ষর যুক্ত করে))

ব্যবহারের উদাহরণ:

  &(*t)=1_t:{%/x@>x}'(1 2;1 2;2 4;2 5;16 8)
0 1 3

এটি ওকে চলছে - নোট করুন যে আমি স্পষ্টতই বিভাগের উপর নির্ভর করি সর্বদা ভাসমান পয়েন্ট ফলাফল তৈরি করে। এটি কোনও ক্ষেত্রে কাজ করবে যদি আপনি ইনপুটটির সমস্ত সংখ্যায় দশমিক পয়েন্ট যুক্ত করেন এবং এর পরে একটি স্থান যোগ করেন _


2

অক্টাভা / মতলব, 44 বাইট

বেনামে ফাংশন ব্যবহার করা:

@(x,y)find((max(x))*min(y')==min(x)*max(y'))

ফলাফলটি 1-ভিত্তিক সূচকে।

এটি ব্যবহার করতে, ফাংশনটি সংজ্ঞায়িত করুন

>> @(x,y)find((max(x))*min(y')==min(x)*max(y'));

এবং এটি নিম্নলিখিত ফর্ম্যাট সহ কল ​​করুন

>> ans([1 2], [1 9; 2 5; 16 8])
ans =
     3

আপনি এটি অনলাইনে চেষ্টা করতে পারেন ।


ফলাফলটি লজিকাল ইনডেক্সিংয়ে হতে পারে ( 0অনুরূপ নয়, একইরকম 1নির্দেশ করে): 38 বাইট :

@(x,y)(max(x))*min(y')==min(x)*max(y')

উপরের মতো একই উদাহরণ:

>> @(x,y)(max(x))*min(y')==min(x)*max(y')
ans = 
    @(x,y)(max(x))*min(y')==min(x)*max(y')

>> ans([1 2], [1 9; 2 5; 16 8])
ans =
 0     0     1

2

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

z{iXhpᵐ/ᵛ∧Xt}ᵘ

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

মূল আয়তক্ষেত্রযুক্ত একটি তালিকা এবং অন্যান্য আয়তক্ষেত্রের তালিকাযুক্ত তালিকা হিসাবে ইনপুট নেয় (সুতরাং পরীক্ষার কেস 1 হ'ল [[[1,2]],[[1,2],[2,4]]]) এবং আউটপুট ভেরিয়েবলের মাধ্যমে 0-ভিত্তিক সূচকের একটি তালিকা আউটপুট করে।

z                 Zip the elements of the input, pairing every "other" rectangle with the main rectangle.
 {          }ᵘ    Find (and output) every unique possible output from the following:
  iX              X is an element of the zip paired with its index in the zip.
    h             That element
      ᵐ           with both of its elements
     p            permuted
        ᵛ         produces the same output for both elements
       /          when the first element of each is divided by the second.
         ∧Xt      Output the index.

যদি সেই ধরণের বিজোড় এবং নির্দিষ্ট ইনপুট বিন্যাসটি প্রতারণা করে তবে এটি কিছুটা দীর্ঘ ...

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

{hpX&tiYh;X/ᵛ∧Yt}ᶠ

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

মূল আয়তক্ষেত্রযুক্ত তালিকা এবং অন্যান্য আয়তক্ষেত্রগুলির তালিকা হিসাবে ইনপুট নেয় (সুতরাং পরীক্ষার কেস 1 আরও সুস্পষ্ট [[1,2],[[1,2],[2,4]]]) এবং আউটপুট ভেরিয়েবলের মাধ্যমে 0-ভিত্তিক সূচকের একটি তালিকা আউটপুট করে।

{               }ᵘ    Find (and output) every possible output from the following:
  p                   A permutation of
 h                    the first element of the input
   X                  is X,
    &                 and
      i               a pair [element, index] from
     t                the last element of the input
       Y              is Y,
        h             the first element of which
            ᵛ         produces the same output from
           /          division
         ;            as
          X           X.
             ∧Yt      Output the index.

দুটি প্রস্থ-উচ্চতার জুটি একই আয়তক্ষেত্রগুলি উপস্থাপন করে কিনা তা নির্ধারণ করতে, এটি কেবল চারটি বাইট নেয় pᵐ/ᵛ(যা ভাগ অনুপাত বা এর পারস্পরিক ক্রমকে ছাড়িয়ে যায়)। বাকি সমস্তগুলি একাধিক আয়তক্ষেত্রগুলি তুলনা করার জন্য পরিচালনা করছে এবং আউটপুট সূচকগুলি।


2

জাজিমা / এপিএল , 7 বাইট

=/⍤÷⍥>¨

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

8 বাইটগুলি বুলিয়ান ভেক্টরের পরিবর্তে সূচকগুলির একটি তালিকা আউটপুট করে

      ¨ for each (pairing the left input with each of the right)
    ⍥>    do the below over sorting the arguments
=/          equals reduce
           after
   ÷        vectorized division of the two

যদিও এটি একটি দুর্দান্ত উত্তর, আমাদের সূচকগুলি আউটপুট করতে হবে। সুতরাং আপনার টিআইও পরীক্ষার ক্ষেত্রে ফলাফলটি হয় হয় [0,1,4]বা [1,2,5](আপনার ভাষা 0- বা 1-সূচকযুক্ত কিনা তা নিশ্চিত নয়)। তিনটি আউটপুট-ফর্ম্যাটের অনুমতি থাকলে এটি আরও ভাল চ্যালেঞ্জ হতে পারে: সূচক; সত্য সত্য মান রাখতে ফিল্টার; কেবল অনুমোদিত সূচকগুলির পরিবর্তে সত্যবাদী / মিথ্যা মানগুলির তালিকা (আপনার এখন যেমন রয়েছে)
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন "আপনি আউটপুটটির সঠিক ফর্ম্যাট এবং ক্রম চয়ন করতে পারেন [...]। এপিএলে সূচকগুলি বুলিয়ান ভেক্টর হিসাবে সংরক্ষণ করা খুব সাধারণ অভ্যাস, তবে আপনি ঠিক বলেছেন, সম্ভবত এটি স্পষ্ট করা উচিত।
ডিজাইমা

আচ্ছা, আমি পড়া " আপনি সূচকের 0- বা কিনা চয়ন করতে পারেন, 1 ভিত্তিক পাশাপাশি সঠিক বিন্যাস এবং আউটপুট ক্রম হিসাবে। " হিসাবে এটা হতে পারে [0,1,4], [1,2,5], 4\n0\n1, 5 2 1, ইত্যাদি ইত্যাদি, যেহেতু এটি এখনও বিবৃত সূচকের । তবে আমি ওপিকে স্পষ্ট করতে বললাম (তারা যদি প্রতিক্রিয়া জানায়, যেহেতু এটি 4 বছরের পুরানো চ্যালেঞ্জ)। আমার 05AB1E উত্তরে এর সূচকগুলির অর্থ 14 বাইট হবে যদি সূচকগুলি বনাম 8 বাইটে অপরিহার্য হয় তবে অন্য দুটি বিকল্পের যে কোনও একটির অনুমতি দেওয়া থাকলে। নির্বিশেষে, আমি আপনার উত্তর upvated। :)
কেভিন ক্রুইজসেন



1

পাওয়ারশেল , 58 56 বাইট

-2 বাইট ধন্যবাদ ম্যাজি এক্স 2 এর জন্য

param($x,$y,$b)$b|%{($i++)[$x/$y-($z=$_|sort)[0]/$z[1]]}

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

এটি input may be however you desireপ্রথম আকারের উপাদানগুলি পৃথকভাবে 3 বাইট সংরক্ষণ করতে এসে ক্লজটিকে কিছুটা আপত্তি জানায় ।

পাওয়ারশেল , 61 59 বাইট

param($a,$b)$b|%{($i++)[$a[0]/$a[1]-($x=$_|sort)[0]/$x[1]]}

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

বর্তমান শূন্য-ভিত্তিক সূচকের মধ্যে অদলবদল করার জন্য শর্তসাপেক্ষ সূচকগুলি ব্যবহার করে এবং অনুপাতের লাইন আপ না করা তার উপর ভিত্তি করে নাল। ভাগ্যক্রমে এই ক্ষেত্রে, $iইনক্রিমেন্টগুলি নির্বিশেষে এটি মুদ্রিত হোক বা না হয়।


1
আপনি যদি এর -পরিবর্তে ব্যবহার করেন তবে আপনি আরও সঞ্চয় করতে পারবেন -ne
mazzy

0

জাভাস্ক্রিপ্ট (ES6), 75

(a,b)=>b.filter(e=>e.l*a.h==a.l*e.h||e.l*a.l==a.h*e.h).map(e=>b.indexOf(e))

বিকল্প, এছাড়াও 75

(a,b)=>b.map((e,i)=>e.l*a.h==a.l*e.h||e.l*a.l==a.h*e.h?i:-1).filter(e=>e+1)

ইনপুটটি JSON অবজেক্ট এবং JSON অবজেক্টের একটি অ্যারে হিসাবে নেওয়া হয়

{
    l: length of rectangle,
    h: height of rectangle
}

আমি মনে করি না এটি দ্বিতীয় পরীক্ষার ক্ষেত্রে কাজ করে।
kirbyfan64sos

@ kirbyfan64sos দুঃখিত যে অংশটি দেখেনি। এটি স্থির হয়েছে (তবে আমি নিশ্চিত যে আমি এটি আরও গল্ফ করতে পারি)
ড্যাঙ্কমিমেস

এগুলি JSON অবজেক্ট নয়, এগুলি সরল জাভাস্ক্রিপ্ট অবজেক্ট। জেএসএন একটি ডেটা ট্রান্সফার ফর্ম্যাট।
edc65

0

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

ʒ‚ε{ü/}Ë}J¹Jsk

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ʒ               # Filter the (implicit) input-list by:
               #  Pair the current width/height with the (implicit) input width/height
  ε             #  Map both width/height pairs to:
   {            #   Sort from lowest to highest
    ü/          #   Pair-wise divide them from each other
              #  After the map: check if both values in the mapped list are equals
        }J      # After the filter: join all remaining pairs together to a string
          ¹J    # Also join all pairs of the first input together to a string
            s   # Swap to get the filtered result again
             k  # And get it's indices in the complete input-list
                # (which is output implicitly)

দ্য JOins আছে কারণ 05AB1E সূচকের নির্ধারণ করতে পারে বহুমাত্রিক তালিকা আমি যতদূর জানি


যদি সত্যতাযুক্ত প্রস্থ / উচ্চতার জুড়িগুলি আউটপুট করে দেয় বা ইনপুট-তালিকার উপর ভিত্তি করে সত্যবাদী / মিথ্যা মানগুলির একটি তালিকা আউটপুট করে, এটি 8 বাইট হতে পারে পরিবর্তে :

ʒ‚ε{ü/}Ë

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ε‚ε{ü/}Ë

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

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