বৃহত্তম কলাম থেকে প্রতিটি অঙ্ক সন্ধান করুন


14

আপনার জন্য এখানে একটি তুলনামূলক সহজ চ্যালেঞ্জ:

ইতিবাচক পূর্ণসংখ্যার একটি তালিকা দেওয়া হয়েছে:

  • এগুলিকে একটি গ্রিডে সজ্জিত করুন এবং প্রতিটি কলামে যোগ করুন। উদাহরণস্বরূপ, যদি ইনপুটটি থাকে তবে [123, 7, 49, 681]গ্রিডটি এর মতো দেখায়:

     1  2  3
     7 
     4  9 
     6  8  1 
    

    এবং প্রতিটি কলামের যোগফল হবে [18, 19, 4]:

     1  2  3
     7 
     4  9 
     6  8  1 
     --------
     18 19 4
    
  • এই পরিমাণগুলির সর্বাধিক সন্ধান করুন, যা এই ক্ষেত্রে 19 এবং তারপরে হবে

  • এই সর্বাধিক কলাম হিসাবে একই সূচীতে থাকা প্রতিটি অঙ্ক আউটপুট করুন। এই ক্ষেত্রে, যে হবে

    2
    9
    8
    

    আপনাকে কোনও নির্দিষ্ট ক্রমে এই সংখ্যাগুলি আউটপুট দিতে হবে না। মনে রাখবেন যে কেবলমাত্র 4 টি আউটপুট রয়েছে, যদিও আমাদের 4 টি ইনপুট ছিল। টাই করার ক্ষেত্রে, প্রথম সূচকটি বেছে নিন। উদাহরণস্বরূপ, যদি ইনপুটটি ছিল [25, 223, 302], আপনার গ্রিডটি হ'ল:

    2  5
    2  2  3
    3  0  2
    -------
    7  7  5
    

    আপনার আউটপুট করা উচিত

    2
    2
    3
    

আপনি নিজের পছন্দ মতো যে কোনও ফরমেটে এই নম্বরগুলি মুদ্রণ করতে পারেন। তালিকার বিন্যাস, নিউলাইন পৃথক করা, স্থান পৃথক করা ইত্যাদি You আপনি ইনপুটটিকে অঙ্কের 2D অ্যারে হিসাবে গ্রহণ করতে পারবেন না, যেমন

[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]

তবে এগুলি বাদে, আপনি স্ট্রিংগুলির একটি তালিকা, অঙ্কের তালিকা বা অন্য কোনও যুক্তিসঙ্গত বিন্যাস হিসাবে ইনপুট নিতে পারেন।

আপনি ধরে নিতে পারেন যে সমস্ত ইনপুট বৈধ হবে এবং এতে কমপক্ষে দুটি সংখ্যা থাকবে।

বরাবরের মতো, বাইটের মধ্যে সংক্ষিপ্ত উত্তরটি জেতে!

পরীক্ষার আইও:

#Input                      #Output
[1, 11, 111, 1111]      --> [1, 1, 1, 1]
[1, 12, 123]            --> [2, 2]
[987654321, 111]        --> [9, 1]
[111, 123456789]        --> [9]
[4, 8, 15, 16, 23, 42]  --> [4, 8, 1, 1, 2, 4]
[4, 8, 12, 26, 27, 38]  --> [2, 6, 7, 8]
[24, 53]                --> [2, 5]
[12, 304, 506]          --> [4, 6]
[30, 285, 121]          --> [0, 8, 2]

শিরোনাম বোঝা মুশকিল। সমস্যাটি "বৃহত্তম কলাম" এর অভিব্যক্তিটির সাথে মিথ্যা বলে মনে হচ্ছে। সম্ভবত এরকম কিছু, "সর্বাধিক মোট সহ কলামটি সন্ধান করুন" বা "কলাম সংযোজন: সর্বাধিক যোগফল সন্ধান করুন"।
ডেভিডসি

সমস্যার বিবৃতিতে বলা হয়েছে "ইতিবাচক পূর্ণসংখ্যার একটি তালিকা দেওয়া হয়েছে", তবে উদাহরণগুলির মধ্যে একটিতে একটি রয়েছে 0। জিরো সাধারণত ইংরেজিতে ধনাত্মক বলে বিবেচিত হয় না।
টন হসপেল 5'15

@tonhospel কোনটি? 302 সঙ্গে এক? আপনি কলামগুলি বিভক্ত করার পরে এটির কেবল একটি শূন্য রয়েছে।
জেমস

ঠিক আছে, আমি ইনপুট ফর্ম্যাটটি ভুলভাবে লিখেছি। আমার জমা দেওয়া ঠিক করা ..
টন হসপেল

উত্তর:


6

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

import Data.Lists
argmax sum.transpose.map(map(read.pure).show)

ব্যবহারের উদাহরণ: argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]-> [4,6]

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

                     map                       -- for each number
                         map(read.pure).show   -- turn into list of digits
           transpose                           -- transpose the list of list
argmax sum                                     -- find the element with the
                                               -- largest sum

5

জেলি , 6 বাইট

DZṚSÞṪ

এটি অনলাইন চেষ্টা করুন! । এটি প্রশ্নের তুলনামূলক সরল বাস্তবায়ন।

D              Convert each number in the input to a list of digits, e.g.
               [353, 2247] -> [[3, 5, 3], [2, 2, 4, 7]]
 Z             Zip the lists together, e.g. [[3, 2], [5, 2], [3, 4], [7]]
  Ṛ            Reverse the list of lists so that first occurrences are now
               at the end, e.g. [[7], [3, 4], [5, 2], [3, 2]]
   SÞ          Sort by sum - this uses Python's sorted function, which is stable
               so equal elements end up in order of appearance, e.g.
               [[3, 2], [7], [3, 4], [5, 2]]
     Ṫ         Tail - get the last element, e.g. [5, 2]

আপনার সমাধান থেকে সরাতে হবে না, তবে এটি আসলে 11 বাইট নয়, এতে কিছু ইউটিএফ -8 মাল্টি-বাইট অক্ষর রয়েছে।
জোশুয়া

3
@ জোশুয়া এটি কিছুটা অদ্ভুত, তবে জেলি তার নিজস্ব কাস্টম কোড পৃষ্ঠা ব্যবহার করে যা একক বাইটে বোঝে এমন 256 টি অক্ষরের প্রতিটি এনকোড করে। এটি ইউটিএফ -8 এ সাধারণত স্কোর হয় না, এপিএল একইভাবে হয় না।
Sp3000

আহ, ঠিক আছে। বর্নানার জন্য ধন্যবাদ.
জোশুয়া

2

রুবি, 100 97 বাইট

a=$<.map &:chomp
puts a.map(&:size).max.times.map{|i|a.map{|e|e[i]}.compact}.max_by{|e|eval e*?+}

eval e*?+মহান! এছাড়াও আপনি ঠিক করতে পারেন $<.map; এটি অ্যারেতে ছড়িয়ে দেওয়ার দরকার নেই।
জর্ডান

@ জর্ডান আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ!
cia_rana

1

গণিতের 82 বাইট

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

SortBy[#~Select~NumberQ&/@Transpose[PadRight[#,30,x]&/@IntegerDigits@#],Tr][[-1]]&

Transposeকয়েকটি বাইট সংরক্ষণ করার জন্য সুপারস্ক্রিপ্ট-টি ফর্মটি ব্যবহার করার কিছু উপায় থাকতে হবে ।


1

পার্ল, 49 48 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ ইনপুট দিয়ে চালান, প্রিফিক্স করা কলাম নম্বরগুলি STDOUT এ মুদ্রণ করে +

lcolumn.pl
123
7 
49 
681

lcolumn.pl:

#!/usr/bin/perl -p
s/./@;[@-].="+$&"/eg}{($_)=sort{eval"$b<=>$a"}@

1

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

এটি কিছুটা ভার্বোজ এবং সম্ভবত ভিন্ন পদ্ধতির সাহায্যে আরও কিছু গল্ফ করা যেতে পারে। আমি আশা করি আমি এ থেকে মুক্তি পেতে পারি .filter(n=>n)

নীল সেভড 3 বাইট এডক 65 এর জন্য 5 টি বাইট
সংরক্ষিত

l=>l.map(n=>[...n].map((d,x)=>(m=(s[x]=(s[x]|0)-d)<m?s[c=x]:m,d)),s=[m=0]).map(n=>n[c]).filter(n=>n)

ডেমো

let f =
l=>l.map(n=>[...n].map((d,x)=>(m=(s[x]=(s[x]|0)-d)<m?s[c=x]:m,d)),s=[m=0]).map(n=>n[c]).filter(n=>n)

console.log(f(["1", "11", "111", "1111"]).join`,`);          // --> [1, 1, 1, 1]
console.log(f(["1", "12", "123"]).join`,`);                  // --> [2, 2]
console.log(f(["987654321", "111"]).join`,`);                // --> [9, 1]
console.log(f(["111", "123456789"]).join`,`);                // --> [9]
console.log(f(["4", "8", "15", "16", "23", "42"]).join`,`);  // --> [4, 8, 1, 1, 2, 4]
console.log(f(["4", "8", "12", "26", "27", "38"]).join`,`);  // --> [2, 6, 7, 8]
console.log(f(["24", "53"]).join`,`);                        // --> [2, 5]
console.log(f(["12", "304", "506"]).join`,`);                // --> [4, 6]
console.log(f(["30", "285", "121"]).join`,`);                // --> [0, 8, 2]


আপনি যদি ব্যবহার করেন (d,x)=>(... ,d)তবে অভ্যন্তরীণ mapএকটি অনুলিপি ফেরত দেয় k, এইভাবে আপনাকে বরাদ্দ থাকা kসাশ্রয় হয়, যা আপনাকে 4 বাইট সংরক্ষণ করে।
নীল

আমি মনে করি অবহেলা m, অর্থাত্ (s[x]=(s[x]|0)-d)<mআপনাকে একটি বাইট সংরক্ষণ করে।
নিল

@Neil - শুভ চোখ, স্বাভাবিক হিসাবে;)
Arnauld

1
আমি একটি ফিল্টার-কম পদ্ধতির চেষ্টা করেছি। দেখা গেল ... 103 বাইট! a=>a.map(n=>[...n+''].map((d,i)=>(t=s[i]=s[i]||[0],t.push(d),(t[0]-=d)<m?r=t:0)),s=[],m=0)&&r.slice(1)
নীল

আপনি সংখ্যার নয় স্ট্রিংয়ের তালিকা হিসাবে ইনপুটটি পেতে পারেন। এইভাবে আপনি+''
5'16 এডিট 65

1

পাইথ, 5 8 বাইট

esDsMM.T

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়, অঙ্কের কিছুই-বিচ্ছিন্ন তালিকা হিসাবে আউটপুট দেয়।

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

ব্যাখ্যা:

      .T  Transpose input to zip together corresponding columns
   sMM    Cast to digit lists
 sD       sort(D) by (s)um
e         take last element, implicitly print

হুম, এটি কি সমস্ত টেস্টকেসের জন্য কাজ করে না? আমি শেষটি চেষ্টা করেছি এবং এটি ওপির প্রশ্নের চেয়ে আলাদা আউটপুট দেয় ।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন হ্যাঁ, আমি গণ্ডগোল করেছি। স্ট্রিংগুলি পাইথের ওভারলোডিংয়ের সাথে জড়িত হওয়ার কারণে এটি সংখ্যার মান অনুসারে বাছাই করা হয়েছিল।
স্টিভেন এইচ।

0

পাইথ, 11 বাইট

h.MsZ.TmjdT

একটি প্রোগ্রাম যা STDIN- তে পূর্ণসংখ্যার তালিকার ইনপুট নেয় এবং একটি তালিকা মুদ্রণ করে।

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

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

h.MsZ.TmjdT  Program. Input: Q
        j T   Yield the base-10 representation, giving a list of digits
       m d   Map that over Q (implicit input fill)
     .T      Justified transpose, giving each column as a list
 .MsZ        Filter the above by maximum sum
h            First element of above
             Implicitly print

0

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

(l,x)=>[...l+0].map((t,i)=>l.map(n=>(n=n[i])&&(v-=n,t.push(n)),v=t=[])|v>=x||(x=v,r=t))&&r

f=(l,x)=>[...l+0].map((t,i)=>l.map(n=>(n=n[i])&&(v-=n,t.push(n)),v=t=[])|v>=x||(x=v,r=t))&&r

;[
 [[123, 7, 49, 681]       , [2,9,8]]
,[[25, 223, 302]          , [2, 2, 3]]
,[[1, 11, 111, 1111]      , [1, 1, 1, 1]]
,[[1, 12, 123]            , [2, 2]]
,[[987654321, 111]        , [9, 1]]
,[[111, 123456789]        , [9]]
,[[4, 8, 15, 16, 23, 42]  , [4, 8, 1, 1, 2, 4]]
,[[4, 8, 12, 26, 27, 38]  , [2, 6, 7, 8]]
,[[24, 53]                , [2, 5]]
,[[12, 304, 506]          , [4, 6]]
,[[30, 285, 121]          , [0, 8, 2]]]
.forEach(t=>{
  var i=t[0], o=t[1], r, ok
  i=i.map(x=>x+'') // convert i to a string list
  r=f(i) 
  ok = (r+'')==(o+'') // compare r and o as comma separated strings
  console.log(ok?'OK':'KO', i+' -> '+ r)
  
})


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