একটি জিরোর ওজন


21

সংখ্যার একটি আদেশযুক্ত তালিকা দেওয়া (সম্ভবত নেতৃস্থানীয় শূন্যগুলির সাথে), সংখ্যাগুলি উল্লম্বভাবে সাজান, তারপরে সমস্ত শূন্যগুলি নীচে সমস্ত পথে নামিয়ে দিন এবং সমস্ত ওভারহ্যাংগুলি নীচের সর্বাধিক উন্মুক্ত স্লটে নেমে যেতে দেয়। নেতৃস্থানীয় শূন্যগুলি সরিয়ে ফলস্বরূপ পূর্ণসংখ্যার ফলাফল আউটপুট করুন।

কাজের উদাহরণ

বলুন আমাদের ইনপুট হিসাবে নিম্নলিখিত দেওয়া হয়েছিল:

['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149']

প্রথমে আমরা এটি উল্লম্বভাবে সাজাই:

0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149

তারপরে, কলাম অনুসারে কলাম, অন্যান্য সংখ্যাগুলি "দিয়ে" জিরোগুলি ড্রপ করুন যাতে তারা নীচে স্থির থাকে এবং অন্যান্য সংখ্যাগুলিকে "চাপ" দেয়। এর ফলে প্রথম দুটি পদক্ষেপ নীচের দিকে যাবে:

2000312941295
339124000124581598
12852353800451258
10235923505185190
0491359102149
^

2300312941295
329124000124581598
14852353800451258
10235923505185190
0091359102149
 ^

2390312941295
328124000124581598
14252353800451258
10935923505185190
0001359102149
  ^

...

2391312941295
328524538124581598
14232323525451258
10915991001185190
0000350000049
                ^

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

2391312941295
3285245381245 1598
14232323525458258
10915991001181190
00003500000495
             ^

2391312941295
3285245381245  598
14232323525458158
10915991001181290
000035000004951
              ^

...

2391312941295
3285245381245
14232323525458159
10915991001181258
000035000004951908
                 ^

শেষ পর্যন্ত, নেতৃস্থানীয় শূন্যগুলি সরিয়ে এই সংখ্যাগুলি আউটপুট করুন। আমাদের কাজের উদাহরণের জন্য, আউটপুট:

[2391312941295, 3285245381245, 14232323525458159, 10915991001181258, 35000004951908]

অন্য উদাহরণের জন্য, ধরুন এর ইনপুট [1234000,12345678,1234,12340608,12341234]

1234000
12345678
1234
12340608
12341234

শূন্যগুলি ফেলে দিন:

1234  
12345678
1234163
12340208
12340004

অবশিষ্ট ওভারহানিং অঙ্কগুলি বাদ দিন:

1234  
1234567
12341638
12340208
12340004

আউটপুট হয় [1234, 1234567, 12341638, 12340208, 12340004]

বিধি

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

2
আমরা কি ধরে নিতে পারি যে আউটপুট সংখ্যাগুলি আমাদের ভাষার যথার্থতা ছাড়িয়ে যাবে না? (জাতীয় চক্রের 14232323525458159কাছে 14232323525458160)
ETHproductions

@ ইথ প্রডাকশনগুলি আমি মনে করি এটি পিপিসিজি ডিফল্ট।
এরিক দি আউটগল্ফার

and all overhangs drop to the bottom-most open slotআমার ভাঙ্গা চ্যালেঞ্জের জন্য এটি একটি ভাল সমাধান ছিল :)।
যাদু অক্টোপাস উরন

1
@ পিটারকর্ডস হ্যাঁ, ইনপুটটিতে নেতৃস্থানীয় শূন্য থাকতে পারে, সুতরাং এটি হ্যান্ডেল করতে সক্ষম হওয়া উচিত। আমি বেশিরভাগ ভাষার জন্য কল্পনা করি, এর অর্থ একটি স্ট্রিং হিসাবে ইনপুট নিন।
অ্যাডমবর্কবর্ক

1
@ পিটারকর্ডস ইনপুট এবং আউটপুট অগত্যা বেস -10 এ থাকা দরকার না (এটি অনুমোদিত ডিফল্ট আই / ও পদ্ধতিতে রয়েছে), যতক্ষণ না আলাদা বেস ব্যবহার করা কাজটিকে তুচ্ছ করে না (এটি একটি আদর্শ ফাঁক)। দ্বিতীয়ত, আমি অনুমান করি যে আমি উল্লেখ করিনি যে নেতৃস্থানীয় শূন্যগুলি অবশ্যই পুরোপুরি অপসারণ করা উচিত , যদিও এটি উদ্দেশ্য ছিল the আমি নিয়ম করতে যাচ্ছি যে ফাঁকা স্থানগুলির সাথে শূন্যগুলি প্রতিস্থাপনের অনুমতি নেই, কারণ আউটপুটিং . 1234আউটপুট করার চেয়ে খুব আলাদা 1234
অ্যাডমবর্কবার্ক

উত্তর:


10

জেলি , 8 বাইট

Z¬Þ€UZṚḌ

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

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

Z¬Þ€UZṚḌ  Main link. Argument: M (2D array / matrix)

Z         Zip; transpose M by reading columns as rows.
 ¬Þ€      Sort each row of the transpose by logical NOT, pushing 0's to the end.
    U     Upend; reverse all sorted rows of the transpose.
     Z    Zip again, restoring rows from columns. Overhangs rise to the top.
      Ṛ   Reverse the order of the rows.
       Ḍ  Decimal; convert the rows from base 10 to integer.

4
কি? আমি যখন প্রশ্নটি পড়ছিলাম তখন আমি ভাবছিলাম: "অবশেষে, এর জন্য কেউ 20 বাইটের চেয়ে কম টানতে পারে এমন কোনও উপায় নেই"। পাগলামি
ক্রંચার

1
Sort each row of the transpose by logical NOT, pushing 0's to the end.এটি কি একটি স্থিতিশীল সাজানোর গ্যারান্টিযুক্ত?
ক্রানচার

1
হ্যাঁ, জেলি পাইথন ব্যবহার করে sortedযা স্থিতিশীল হওয়ার গ্যারান্টিযুক্ত।
ডেনিস

আমি এই রূপান্তরিত বর্ণন সংস্করণটি পছন্দ করি: ṚZẸÞ€ZṚḌ:)
জোনাথন অ্যালান


4

হুশ , 12 বাইট

md↔TmoÖ±miT↔

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

ব্যাখ্যা

md↔Tm(Ö±mi)T↔  -- input as list of strings, example: ["103","32","258"]
            ↔  -- reverse: ["258","32","103"]
           T   -- transpose: ["231","520","83"]
    m(    )    -- with each line do (example with "520")
        mi     -- | convert each char to digit: [5,2,0]
      Ö±       -- | sort by signum (stable): [0,5,2]
               -- : [[2,3,1],[0,5,2],[8,3]]
   T           -- transpose: [[2,0,8],[3,5,3],[1,2]]
  ↔            -- reverse: [[1,2],[3,5,3],[2,0,8]]%
md             -- convert each to integer: [12,353,208]

4

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

lambda l:[int(''.join(z))for z in zip(*map(lambda*a:['']*a.count(None)+[e for e in a if'0'<e]+['0']*a.count('0'),*l))]

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

উদার সংস্করণ

def f(list_):
 max_len = max(len(x) for x in list_)
 transposed_list = zip(*[list(row)+(max_len-len(row))*[None] for row in list_])
 weighted_list = [['']*column.count(None)+[cell for cell in column if cell != '0' and cell != None]+['0']*column.count('0') for column in transposed_list]
 return [int(''.join(row)) for row in zip(*weighted_list)]

প্রথম দুটি লাইন সমান map(lambda*a...), ডিফল্ট আচরণ যদি mapপূরণ করতে হয় Noneতবে যদি একটি তালিকা অন্যের চেয়ে কম হয়।
e>'0'এর সমতুল্য cell != '0' and cell != None, কারণ যদি এটি কোনও অঙ্ক (1 ~ 9) হয় তবে এটির একটি উচ্চ কোডপয়েন্ট থাকবে এবং (কোনও) স্ট্রিং এর চেয়ে বেশি হবে None


এর একটি অদৃশ্য সংস্করণ পোস্ট করার জন্য যত্নশীল?
পিটার কর্ডেস

@ পিটারকর্ডস অস্পষ্ট সংস্করণ এবং কিছু অস্পষ্ট পয়েন্টগুলির জন্য একটি সংক্ষিপ্ত ব্যাখ্যা যোগ করেছেন
রড


2

রেটিনা 0.8.2 , 95 92 বাইট

m(+`^((.)*)(.+)(¶(?<-2>.)*)(?(2)_)$
$1$4$3
+`^((.)*)0(.*¶(?>(?<-2>.)*))([^0])
$1$4${3}0
^0+

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: প্রথম পর্যায়ে ওভারহানিং ডিজিটগুলি ড্রপ হয় কারণ এটি দ্বিতীয় স্তরের জিরোগুলি নামানোর জন্য সহজ করে (সম্পাদনা: 3 বাইট সংরক্ষণের জন্য আরও সহজ)। তৃতীয় পর্যায়ে তারপরে নেতৃস্থানীয় শূন্যস্থানগুলি সরানো হবে।


2

রুবি , 104 বাইট

->a{a.map{|x|x.ljust(99).chars}.transpose.map{|x|x.sort_by{|x|x<?1?x:?!}}.transpose.map{|x|x.join.to_i}}

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

ব্যাখ্যা

->a{
  a.map{|x|x.ljust(99).chars}  # Fill spaces to make this rectangular
    .transpose.map{|x|
       x.sort_by{|x|x<?1?x:?!} # Treat all chars but " 1" as ! (see ascii table)
    }.transpose.map{|x|x.join.to_i} # Convert back to numbers
                       # note: if no leading 0s, eval x*'' , doesn't work here
}

1

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

বেনামে ট্যাসিট প্রিফিক্স ফাংশন যুক্তি হিসাবে একটি অক্ষর ম্যাট্রিক্স গ্রহণ করে এবং সংখ্যার একটি তালিকা ফিরিয়ে দেয়।

⍎⍤1∘⍉' 0'(∩∘⊃,~,∩∘⊃∘⌽)⍤1⍨⍉

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

 ইনপুট স্থানান্তর করুন (যেমন আমাদের কলামগুলিতে কাজ করা দরকার)

' 0'()⍤1⍨ প্রতিটি আঙ্গলে নিম্নলিখিত ট্যাসিট ফাংশনটি প্রয়োগ করুন (টেনসর র‌্যাঙ্ক 1 এর উপ-অ্যারে) যথাযথ আর্গুমেন্ট ' 0'হিসাবে (যুক্তিগুলি অদলবদল করে):

 সারিটির ছেদ এবং
 এবং
 প্রথমটি ' 0'
 (যেমনrow∩' ' , প্রতিটি সারি থেকে সমস্ত খালি স্থান নয়)

, অনুসরণ…

~ সেট পার্থক্য
 (যেমনrow~' 0' ; সারি কিন্তু ফাঁকা জায়গা এবং জিরো ব্যতীত)

, অনুসরণ…

 সারি এবং ছেদ
 এবং
 প্রথম
 এর
 বিপরীত ' 0'
 (অর্থাত row∩'0', প্রতিটি সারি থেকে সব zeros)

⍎⍤1 (টেন্সর র্যাঙ্ক 1 উপ-অ্যারে) প্রতিটি সারির মূল্যায়ন
 এর
 যে TRANSPOSE (অর্থাত প্রতিটি কলামের এখন পরিবর্তিত ইনপুট সারি)


প্রথম বন্ধন বিট চতুর। সেখানে উদ্দেশ্যটি বুঝতে আমার কিছুটা সময় লেগেছে, যদিও আমি জানি যে পৃথক স্কুইগলস কী করে। একবার আমি এটি বুঝতে পারলে, এটি বীট করা সহজ: ⍎⍤1∘⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1∘⍉( ⎕io←0) এটি আরও গল্ফযোগ্য হতে পারে, যেমন আমি ডায়াডিক অন্বেষণ করি নি
ngn

আসলে, উপরোক্ত সম্পূর্ণ প্রোগ্রাম (না একটি ট্রেন) হিসেবে খাটো:⍎⍤1⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1⍉⎕
ngn

@ জিএনএন এই জাতীয় পদ্ধতিতে নিজস্ব পোস্টের যোগ্যতা রয়েছে। প্রাক এবং পোস্ট-প্রসেসিং সুস্পষ্ট।
অ্যাডম

1

পার্ল 5 , -p0 77 বাইট

পুরানো শৈলীর গণনা: 79 বাইট ( +2জন্য)p0 )

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

0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149

ওভারহ্যাং ড্রপিং এবং 0একটি রেজেক্সে নেমে যাওয়াটা কিছুটা জটিল ছিল

#!/usr/bin/perl -p0
s/^.{@{+}}\K((0)|.+$)(.*
.{@{+}})((?(2)[1-9]|$))/$4$3$1/m while/|/g;s/^0+//mg

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


0

চুনি , 203 বাইট

->a{t=->b{b[0].zip(*b[1..-1])}
m=a.map{|s|s.size}.max
a.map!{|s|(s+" "*m)[0...m].chars}
a=t[a].map{|c|c.size.times{|i|" 0"[c[i]]&&(c.slice!(i)==?0?c.push(?0):c.unshift(" "))}
c}
t[a].map{|r|r.join.to_i}}

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

একটি ল্যাম্বদা স্ট্রিংগুলির একটি অ্যারে গ্রহণ করে এবং ইনসগুলির একটি অ্যারে ফিরিয়ে দেয়। আমার মনে হচ্ছে আমি কিছু মিস করছি; এটি প্রচুর অনুভূত হয়: /

->a{
  t = -> b { b[0].zip(*b[1..-1]) }     # t is a lambda that transposes 2D arrays
  m = a.map{ |s| s.size }.max          # m is the maximum input string length
  a.map!{ |s| (s+" "*m)[0...m].chars } # Right-pad every string to the same length
  a = t[a].map{ |c|                    # Transpose a, and for every row (column)
    c.size.times{ |i|                  # For every character in the column
      " 0"[c[i]] && (                  # If the character is 0 or space
        c.slice!(i) == ?0 ?            # Remove it from the column, and if it was 0,
          c.push(?0) :                 # Push a 0 to the end (bottom) of the column, else
          c.unshift(" ")               # Add a space to the top of the column
      )
    }
    c
  }
  t[a].map{ |r| r.join.to_i }          # Transpose a back, and parse each row to int
}

আমি outgolfed এই (জন্য এখন)
Unihedron

@ ইউনিহেড্রন বাহ, আপনি আমাকে ৫০% দিয়ে মারলেন। আপনি অবশ্যই আমার +1 পেয়েছেন।
বেনজ 2240

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