একটি তালিকাতে শূন্যগুলি আবরণ করুন


41

এই এসও প্রশ্ন দ্বারা অনুপ্রাণিত

ইনপুট হিসাবে আপনাকে পূর্ণসংখ্যার একটি খালি-খালি তালিকা দেওয়া হবে, যেখানে প্রথম মানটি শূন্য নয় বলে গ্যারান্টিযুক্ত। আউটপুটটি তৈরি করতে, তালিকার শুরু থেকে হেঁটে চলুন এবং প্রতিটি শূন্যের মান আউটপুট করে। যখন আপনি একটি শূন্যের মুখোমুখি হন, পরিবর্তে আউটপুটটিতে আপনি সম্প্রতি যুক্ত হওয়া মানটি পুনরাবৃত্তি করুন।

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

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

পরীক্ষার মামলা

[1, 0, 2, 0, 7, 7, 7, 0, 5, 0, 0, 0, 9] -> [1, 1, 2, 2, 7, 7, 7, 7, 5, 5, 5, 5, 9]
[1, 0, 0, 0, 0, 0] -> [1, 1, 1, 1, 1, 1]
[-1, 0, 5, 0, 0, -7] -> [-1, -1, 5, 5, 5, -7]
[23, 0, 0, -42, 0, 0, 0] -> [23, 23, 23, -42, -42, -42, -42]
[1, 2, 3, 4] -> [1, 2, 3, 4]
[-1234] -> [-1234]

21
কিছুটা ট্রিভিয়া: পরিসংখ্যানের বিশ্বে এই অপারেশনের নামটি হ'ল এলওসিএফ (শেষ পর্যবেক্ষণটি এগিয়ে নেওয়া) অনুদান।
অ্যালেক্স এ 0

ইনপুট থাকলে কী হবে [0,0]?
কৃতিক্সিত লিথোস

4
@ কে "... যেখানে প্রথম মানটি শূন্য-
শনাক্ত

ইনপুট হলে কী হবে [1,01]? ব্যবহার করে, নিউটনকে এর Pyth উত্তর, তুলনা এই এবং এই
আর্কটরাস

পাইথ ইনপুটটিতে এরিডান 01কোনও বৈধ পূর্ণসংখ্যার নয়, সুতরাং আইস্যাকের জন্য এটির কোনও অ্যাকাউন্ট করতে হবে না। অন্যান্য উত্তরগুলি চাইলে এটির মতো ইনপুট গ্রহণ করতে পারে, যতক্ষণ তারা সামঞ্জস্য
বজায় রাখে (

উত্তর:


19

পাইথ, 6 বাইট

mJ|dJQ

প্রদর্শন

m ... Qঅর্থ এই ইনপুট উপর একটি ফাংশন মানচিত্র। ফাংশনটি ম্যাপ করা হচ্ছে J|dJJ = d or Jপাইথনে এর অর্থ , যেহেতু Jপ্রথম ব্যবহারের জন্য নিম্নলিখিত মানকে অর্পণ করা হয়েছে। পাইথনের বিপরীতে, অ্যাসাইনমেন্ট এক্সপ্রেশনগুলি পাইথের জন্য নির্ধারিত মানটি ফেরত দেয়, তাই মানচিত্রটি প্রতিটি ক্রমাগত মানটি Jপছন্দসই অনুসারে প্রদান করে।


23

জেলি , অ-প্রতিযোগিতামূলক

3 বাইট এই উত্তরটি প্রতিদ্বন্দ্বিতামূলক নয়, কারণ এটি এমন বৈশিষ্ট্যগুলি ব্যবহার করে যা চ্যালেঞ্জ পরবর্তী পোস্ট করে দেয়।

o@\

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

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

o      Take the logical OR of its arguments.
 @     Reverse the argument order of the link to the left.
  \    Do a cumulative reduce, using the link to the left.

6
আমার মস্তিষ্ক বুঝতে পারে না ... অবশেষে ডেনিস আমাদেরকে গল্ফ থেকে স্থায়ীভাবে বের করার উপায় খুঁজে পেয়েছে। যেমন তিনি ইতিমধ্যে ছিল না। ಠ_ಠ
অ্যাডিসন ক্রম্প 0

1
ব্যাখ্যা আর প্রোগ্রামের সাথে সামঞ্জস্য করে না
কুইন্টোপিয়া

18

রুবি, 25 বাইট

->a{a.map{|x|x==0?a:a=x}}

এটি আসলেই খারাপ।

বিশেষত, স্নিপেট x==0 ? a : (a=x)

আমি যদি aপূর্বের ননজারো মানটির জন্য অন্য কোনও পরিবর্তনশীল নামটি ব্যবহার করতাম তবে —লেটের কথায় y— আমাকে এটির বাইরে ঘোষণা করতে হত map(কারণ y=xকেবলমাত্র সেই একক mapপুনরাবৃত্তির অভ্যন্তরে একটি সুযোগ থাকবে )। এটি আরও চারটি অক্ষর ব্যবহার করবে ( y=0;)।

তবে আমি যদি পরিবর্তনশীল নামটি a... হ্যাঁ ব্যবহার করি তবে আপনি এটি অনুমান করেছিলেন। আমি আসলে আর্গুমেন্টটি আবার অর্পণ করছি যা আমরা ইনপুট (মূল অ্যারে) হিসাবে পেয়েছি

mapপাত্তা দেয় না কারণ এটি যে জিনিসটিকে ডাকা হচ্ছে তার মূল মূল্য সম্পর্কে কেবল চিন্তা করে, তাই এটি আসলে কাজ করে।


17

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

a%0=a
a%b=b
scanl1(%)

আমরা (বেনামে) ফাংশনটি শেষ লাইনে চলেছি। প্রথম দুটি লাইন একটি সহায়ক ফাংশন সংজ্ঞায়িত করে।

scanl1(%) [1,0,2,0,7,7,7,0,5,0,0,0,9]
[1,1,2,2,7,7,7,7,5,5,5,5,9]

বাইনারি ফাংশন %দ্বিতীয় আর্গুমেন্টকে আউটপুট দেয়, যদি না হয়, তবে এটির 0পরিবর্তে এটি প্রথম যুক্তিকে আউটপুট করে। scanl1প্রতিটি পদক্ষেপে ফলাফল আউটপুট করে ইনপুট তালিকার উপরে এই ফাংশনটির পুনরাবৃত্তি করে।


13

জে, 8 বাইট

{:@-.&0\

এটি নীচে হিসাবে অনুরোধ করা একটি unary ফাংশন।

   f =: {:@-.&0\
   f 2 0 0 4 0 _1 0
2 2 2 4 4 _1 _1

ব্যাখ্যা

{:@-.&0\
       \  Map over non-empty prefixes:
   -.      remove all occurrences
     &0    of the number 0 and
{:@        take the last element.

আপনি 0 টি অপসারণের পরিবর্তে পরম মান দ্বারা প্রতিলিপি করতে পারেন?
lirtosiast

@ থমাসকওয়া এটি আমার প্রথম চেষ্টা ছিল। এটি {:@(#~|)\, তাই এক বাইট দীর্ঘ।
Zgarb

13

সেড, ৮

/^0$/g
h
  • /^0$/একটি লাইনের শূন্যের সাথে মেলে - যদি তাই gহোল্ড স্পেসটিকে প্যাটার্ন স্পেসে অনুলিপি করে
  • h হোল্ড স্পেসে প্যাটার্ন স্পেসটি অনুলিপি করে

পূর্ণসংখ্যা নিউলাইন পৃথক করা হয়। উদাহরণ:

$ printf -- "-1\n0\n5\n0\n0\n7\n" | sed -f zerocover.sed
-1
-1
5
5
5
7
$ 

11

জাভাস্ক্রিপ্ট ES6, 19 বাইট

s=>s.map(i=>p=i||p)

সোজা সমাধান, ইনপুট মাধ্যমে লুপ, pবর্তমান উপাদান iবা pযদি iহয় 0আউটপুট এবং এটি আউটপুট।

উদাহরণ রান (অজ্ঞাতনামা ফাংশন নির্ধারণ f):

>> f([1, 0, 2, 0, 7, 7, 7, 0, 5, 0, 0, 0, 9])
<< Array [1, 1, 2, 2, 7, 7, 7, 7, 5, 5, 5, 5, 9]

আমি যখনই এটি চালনা করি তখনই "ভেরিয়েবল পি খুঁজে পাবে না" বলে ত্রুটি
পাই

@ ডাউঙ্গোয়েট কারণ দোভাষী একটি কঠোর মোড কেবলমাত্র অনুবাদক ter আপনি যদি সেই কোডটি কঠোর মোডে না চালান তবে এটি কাজ করা উচিত।
wizzwizz4

@ wizzwizz4 ওহ, ঠিক আছে
ডাউনগোট

1
@ wizzwizz4 স্ট্রাইক মোডটি নির্বোধ।
সুপারজেডি ২৪

1
@ SuperJedi224 এটি নির্বোধ নয় এটি খুব দরকারী; এটি নিশ্চিত করে যে আপনার কোডটি অস্পষ্ট নয় এবং এটি একটি বড় আপডেটের সাথেও কাজ করবে, এবং অপরিজ্ঞাত আচরণ ইত্যাদি ব্যবহার করবে না তবে কী নির্বোধ তা ডিফল্টরূপে এটি সক্ষম করে দিচ্ছে, যেহেতু স্ট্রাইক মোড নিজেকে বন্ধ করার কোনও উপায় নির্দিষ্ট করে না since , এবং যদি আপনি শুরুতে কঠোর মোড স্ট্রিংটি না রাখেন তবে আপনি এটি চান না এবং / অথবা কোড-গল্ফ করছেন।
wizzwizz4


7

ডায়ালগ এপিএল, 12 10 9 বাইট

(⊃0~⍨,⍨)\

@ জগারবের জে উত্তর দ্বারা অনুপ্রাণিত।

(⊃0~⍨,⍨)\      Monadic function:
        \      Cumulative reduce by
(⊃0~⍨,⍨)       the dyadic function:
     ,⍨           Arguments concatenated in reverse order
  0~⍨             With zeroes removed
 ⊃                Take the first element

এখানে চেষ্টা করুন


6

পাইথ, 8 বাইট

t.u|YNQ0

বেজ কেস 0 সহ (পাইথনের .u) দ্বারা |(সংক্ষিপ্ত হ্রাস) ব্যবহার করে or


@ আইসএইচজি মনে .uহয় এটি দীর্ঘ Jএবং এমনকি Kবাঁধা থাকলেও is এটি কি সর্বদা অনুকূল?
lirtosiast

মনে হচ্ছিল (অন্তত আমি যতদূর জানি) এখানে । এটি সাধারণত সাহায্য করে যখন আপনি কোনও কারণে সমস্ত ফলাফল চান।
FryAmTheEggman

5

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

while 1:x=input()or x;print x

প্রতি লাইনে এক হিসাবে দেওয়া সংখ্যার হিসাবে ইনপুট নেয় এবং একই ফর্ম্যাটে আউটপুট। সমাপ্তির পরে ত্রুটি দিয়ে শেষ হয়।

এর সংক্ষিপ্ত-সার্কিট প্রকৃতি ব্যবহার করে orভেরিয়েবলটি ইনপুটটিতে xআপডেট করা হয়, যদি না যে ইনপুটটি 0 হয় (যা ফালসি হয়), যদি এটির বর্তমান মান থাকে। তারপরে, xমুদ্রিত হয় নোট করুন যেহেতু প্রথম তালিকার মান ননজারো, xতাই নির্ধারিত হওয়ার আগে ডান হাতের দিক থেকে মূল্যায়ন করা হয় না।


এটি #\nJ|EJ
পাইথের

5

গণিত 38 বাইট

প্যাটার্ন মিলটি বারবার এর সাথে প্রতিস্থাপন ...a,0,...করে...a,a...

#//.{b___,a_/;a!=0,0,e___}:>{b,a,a,e}&

5

মতলব, 41 46 বাইট

এটি নীচের পার্থক্য সহ আমার মূল উত্তরে অনুপ্রাণিত :

  1. এর পরিবর্তে লজিকাল ইনডেক্সিং ব্যবহার করুন nonzeros
  2. এর সাথে তুলনা করার পরিবর্তে ডাবল যৌক্তিক অবহেলা 0
  3. আউটপুট বিন্যাস নমনীয় হওয়ায় ট্রান্সপোজ সরানো যায়
  4. একটি মধ্যবর্তী পরিবর্তনশীল অপসারণ।

আইটেম 4 এর জন্য টম কার্পেন্টারকে ধন্যবাদ , এবং কোনও ফাংশনের পরিবর্তে একটি প্রোগ্রাম ব্যবহার করার পরামর্শের জন্য; একসাথে এগুলি 5 বাইট হ্রাস করতে দেয়।

x=input('');u=x(~~x);disp(u(cumsum(~~x)))

উদাহরণ:

>> x=input('');u=x(~~x);disp(u(cumsum(~~x)))
[4 0 3 2 0 5 6 0]
     4     4     3     2     2     5     6     6

আপনি একটি বাইট এটিকে প্রোগ্রামে রূপান্তর করে সংরক্ষণ করতে পারেন - x=input('')ফাংশন ঘোষণার disp(u(t)পরিবর্তে এবং y=বিটের পরিবর্তে ব্যবহার করুন । এছাড়াও, আপনি tভেরিয়েবলটি থেকে মুক্তি পেয়ে x=input('');u=x(~~x);disp(u(cumsum(~~x)))41 টির জন্য আরও চারটি বাইট সংরক্ষণ করতে পারেন
টম কার্পেন্টার

@ টমকার্পেন্টার অনেক ধন্যবাদ! সম্পাদিত
লুইস মেন্ডো

আমার মতলব নেই, তবে @(x)x(~~x)(cumsum(~~x))অক্টোবায় কাজ করি works
আলেফাল্ফা

@ আলেফাল্ফ মতলব পুনরাবৃত্ত সূচকে অনুমতি দেয় না।
অ্যালেক্সার


5

জাপট, 8 7 বাইট

N£U=XªU

বেশ সহজ. কমা দ্বারা পৃথক ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

অবহেলিত এবং ব্যাখ্যা

N£    U=Xª U
NmXYZ{U=X||U

        // Implicit: N = input, U = first item
NmXYZ{  // Map each item X to:
U=Z||U  //  Set U to (X || U) and return.
        //  If X is non-zero, this sets U to X.
        //  Otherwise, this leaves U as the last non-zero we've encountered.
        // Implicit: output last expression

অ-প্রতিযোগিতামূলক 4-বাইট সংস্করণ: ( åকমান্ড এবং !-আউটো-ফাংশন চ্যালেঞ্জের পরে যুক্ত)

Nå!ª

ব্যাখ্যা:

Nå!ª
Nå!||
NåXY{Y||X}

        // Implicit: N = input, U = first item
NåXY{   // Cumulatively reduce N; take each item Y and prev value X,
Y||X}   //  and return Y if it is non-zero; return X otherwise.
        // Implicit: output last expression

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


অপেক্ষা করুন, ªনা, এর চেয়েও º? ºএবং কোনও সুযোগেই কি ?
কেয়ার্ড কোইনরিঙ্গিংহিং

@cairdcoinheringaahing না, ºহয় ((। তাদের ইউনিকোড মান দ্বারা নির্ধারিত হয়েছিল যেহেতু আমি তাদের প্রয়োজনীয়তা পেয়েছি: পি ªএনডি এবং ºআর বুদ্ধিমান, যদিও আমি এটি জাপট ২.০ এর জন্য ব্যবহার করতে পারি ...
ETH প্রোডাকশনগুলি

5

জাভা, 78

int[]f(int[]a){for(int i=-1,b=i;++i<a.length;a[i]=b=a[i]==0?b:a[i]);return a;}

এখানে আমরা সর্বশেষ নন-শূন্যের উপর নজর রাখি এবং যেখানে উপযুক্ত সেখানে এটি চালিত করি। এটি করার সুস্পষ্ট উপায়ের মতো মনে হচ্ছে।


5

প্রোলোগ (এসডাব্লুআই) , 54 বাইট

[X,0|T]+[X,X|Y]:-[X|T]+[X|Y].
[X|T]+[X|Y]:-T+Y.
[]+[].

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

ব্যাখ্যা

আমি এই উত্তর দিয়ে সত্যিই খুশি।

প্রথমে আমরা বলি যে খালি তালিকাটি খালি তালিকার সমাধান:

[]+[].

তারপরে আমরা বলি যে [X,X|Y]এটির সমাধান [X,0|T], যদি বাকী প্রতিটি সমাধানের দ্বিতীয় এন্ট্রি সরিয়ে দিয়ে।

[X,0|T]+[X,X|Y]:-[X|T]+[X|Y].

অবশেষে আমরা বলব যে বাকী যে কোনও জিনিসই যদি একই মান দিয়ে শুরু হয় এবং দুটি তালিকার বাকী তালিকার একে অপরের সাথে মিল থাকে তবে তা বৈধ।

যদি সেই ব্যাখ্যাটি আপনার পক্ষে কাজ করে না তবে এখানে কোডটি হ্যাসকেলে অনুবাদ করা হয়েছে:

g(a:0:x)=a:g(a:x)
g(a:x)=a:g x
g x=x

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


খুব সংক্ষিপ্ত! আমি পছন্দ করি যে কীভাবে কিছু কার্যকরী এবং যুক্তিযুক্ত প্রোগ্রামিং ভাষা আপনাকে নিয়মের এমন আক্ষরিক অনুবাদ করতে দেয়। এটি এ জাতীয় প্রাকৃতিক উপায়!
ThePlasmaRailgun

4

গল্ফস্ক্রিপ্ট, 10 বাইট

~{1$or}*]`

এই প্রোগ্রামটি স্টলিনের কাছ থেকে একটি গল্ফস্ক্রিপ্ট অ্যারে আক্ষরিক (উদাঃ [1 0 2 0]) আকারে ইনপুট নেয় এবং তার আউটপুটটি একই ফর্ম্যাটে স্টাডআউটে লেখায় (যেমন [1 1 2 2])।

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

একটি ব্লকের মধ্যে এটি মোড়ানো এবং একটি প্রতীককে নির্ধারিত করার কারণে একটি ফাংশন (একটি গল্ফস্ক্রিপ্ট অ্যারে নেওয়া এবং ফিরিয়ে নেওয়া) তিন বাইট দীর্ঘ হবে:

{[{1$or}*]}:f

অবশ্যই, যদি কেবলমাত্র ফাংশন বডি (যেমন [{1$or}*]) গণনা করা হয়, তবে আমি প্রকৃতপক্ষে একা থাকা প্রোগ্রামের তুলনায় একটি বাইট সংরক্ষণ করতে পারি।


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

4

মিনকোলাং 0.14 , 12 10 বাইট

$I?.nd?xdN

এখানে চেষ্টা করুন। প্রশ্ন হিসাবে ইনপুট দেওয়া যেতে পারে, কিন্তু বন্ধনী ছাড়াই

ব্যাখ্যা

$I      Push the length of the input on the stack.
  ?.    If this is 0, stop. Otherwise, continue.

nd        Take number from input and duplicate it.
  ?x      If this number is 0, dump the top of stack.
    dN    Duplicate the top of stack and output as number

মিনকোল্যাং টরোডিয়াল, সুতরাং এটি শুরুতে প্রায় শেষ হয়ে যায় এবং এটি আঘাত না করে অবধি .থামতে থাকে।



4

, 31 বাইট

[[I',T%T/]{n#}d]{n.{:V}{;V}?}d]

এটি আলাদা করে একটি ইনপুট নেয় ,এবং একই তালিকাটিকে আউটপুট করে []

7,0,3,0,0,2,-50,0,0 => [7,7,3,3,3,2,-50,-50,-50]

ব্যাখ্যা:

[] ফলাফল অ্যারে মধ্যে রাখুন
 [আমি ', টি% টি /] {n #} d] সংখ্যার অ্যারেতে ইনপুট ফর্ম্যাট করুন
                {n। {: ভি} {; ভি}?} d শূন্যস্থান পূরণ করুন (এটি কীভাবে কাজ করে তার জন্য নীচে দেখুন)


17 বাইট

I~]{n.{:V}{;V}?}d

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

5 4 0 0 1 0 0 => 5 4 4 4 1 1 1
A 3 0 0 1 B 0 => 10 3 3 3 1 11 11
67* 0 0 78* 0 => 42 42 42 56 56
67*_ 4 3_ 0 0 => -42 4 -3 -3 -3

ব্যাখ্যা:

I ~] ইনপুটটিকে পূর্ণসংখ্যার অ্যারেতে রাখে
   the} d ইনপুটটিতে প্রতিটি সংখ্যার জন্য
    । এন {; ভী} {: v}? সংখ্যাটি যদি 0 হয় তবে ভিতে চাপ দিন
                  যদি তা না হয় তবে ভিটে নম্বরটি সেট করুন

আপনি এর সাথে দুটি বাইট সংরক্ষণ করতে পারেন I~]{n.{:V}{;V}?}d। আমি ভাবছি যদি dকেবল স্ট্যাকের পরিবর্তে মানটি রাখা উচিত n...
kirbyfan64sos

আপনি কি নিশ্চিত যে ও এটি পরিচালনা করতে পারে? এটি পাস করার উপায় আমি খুঁজে পাচ্ছি না -৪২ "আপনার আউটপুটটি আপনার জমা দেওয়ার জন্য একটি গ্রহণযোগ্য ইনপুট হওয়া উচিত" সন্তুষ্ট করে ying
manatwork

@ মান্যাটওয়ার্ক আমি এখন আরও একটি ভাল সংস্করণ পেয়েছি যা এর জন্য কাজ করে -42তবে এটি আউটপুটটির চারপাশে বন্ধনী যুক্ত করে।
ফেজ

4

আর, 39 37 33 বাইট

function(x)zoo::na.locf(x*(x|NA))

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

পরিসংখ্যানের বিশ্বে এই অপারেশনের নামটি হ'ল এলওসিএফ অনুদান, যেখানে এলওসিএফ লাস্ট অবজারভেশন ক্যারিড ফরওয়ার্ডকে বোঝায়। আর এই কাজ করা সম্ভব, আমরা ব্যবহার করতে পারি na.locfথেকে zooপ্যাকেজ, যা প্রতিস্থাপন NAগত জ্ঞাত নন সঙ্গে মান NAমান। আমাদের NAপ্রথম ইনপুটটিতে শূন্যগুলি প্রতিস্থাপন করতে হবে ।

এটি করতে, আমরা ব্যবহার করি x|NAযা TRUEকখন x != 0এবং NAঅন্যথায় হবে। যদি আমরা এটি দিয়ে গুণ করি xতবে TRUEউপাদানগুলি সংশ্লিষ্ট উপাদানগুলির সাথে xএবং NAএর থাকার NAদ্বারা প্রতিস্থাপন করা হবে, যার ফলে সমস্ত শূন্য প্রতিস্থাপন করা হবে। এটি তখন পাস করা হয় zoo::na.locfযা আমাদের ঠিক যা চায় তা দেয়।

ফ্লাডেলের জন্য 4 টি বাইট সংরক্ষণ করা হয়েছে!


4

মরিচা, 100 বাইট

fn f(i:&[i64])->Vec<i64>{let(mut o,mut l)=(i.to_vec(),0);
for x in&mut o{if *x==0{*x=l}else{l=*x}};o}

এই চ্যালেঞ্জ পেরিয়ে হোঁচট খেয়েছি, ভেবেছি আমি এটি আমার প্রিয় ভাষায় চেষ্টা করব। এটি বিদ্যমান নেই তা[T]::windows_mut() খুঁজে পাওয়ার আগে প্রথমে চেষ্টা করার চেষ্টা করেছিলেন । এবং এটি সম্ভবত এটির চেয়ে বেশি দীর্ঘ ছিল। যাইহোক, এটি প্রমাণিত হয়েছে যে গল্ফযুক্ত মরিচা খুব কুৎসিত এবং খুব প্রতিযোগিতামূলক নয় (বিশেষত go সমস্ত গোশার্ডেন এসোটেরিক্সের সাথে!) 1

নিউলাইনটি বাইটাউন্টে অন্তর্ভুক্ত নয়; এটি কেবলমাত্র তাই আপনার পাশের দিকে স্ক্রোল করতে হবে না। এটি কোডটির অর্থ পরিবর্তন করে না।

Ungolfed:

fn cover_zeroes(input: &[i64]) -> Vec<i64> {
    let mut output = input.to_vec();
    let mut last_nonzero = 0;
    for item in &mut output {
        if *item == 0 {
            *item = last_nonzero;
        }
        else {
            last_nonzero = *item;
        }
    }
    output
}

[1] অন্তত এটি জাভার মতো খারাপ নয়।


7
" অন্তত এটি জাভার মতো খারাপ নয় "?
আহেম

1
@ জিওবিটস ওহ, ঠিক আছে। আমি আপনাকে সেই public static void mainবয়লারপ্লেটের প্রয়োজনীয়তার উপর নির্ভর করছি ...
ব্ল্যাকলাইট জ্বলজ্বল

3

মিল্কিও ওয়ে 1.2.1 , 33 বাইট

:y;=<:&{~<?{0b_^;:3≤_;}1-}^<Ω!

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


ব্যাখ্যা

:    : :           :              # duplicate the TOS
 y                                # push the length of the TOS
  ;               ;    ;          # swap the TOS and STOS
   =                              # dump a list to the stack
    < <    <                 <    # rotate the stack leftward
        &{~                }      # while loop
            ?{  _     _ }         # if-else statements
              0     3    1        # push an integer
               b                  # == on the TOS and STOS
                 ^          ^     # pop the TOS without output
                     ≤            # rotate the top N stack elements leftward
                          -       # subtract the TOS from the STOS
                              Ω   # push a list made of the top N stack elements
                               !  # output the TOS

আমি নিশ্চিত যে টিওএস এবং স্টোস মানে স্ট্যাকের শীর্ষস্থানীয় এবং দ্বিতীয় থেকে টপ টু স্ট্যাক, এটি কি ঠিক?
অ্যাডিসন ক্রম্প 0

হ্যাঁ @ ফ্ল্যাগএএসপাম
জ্যাচ গেটস

3

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

g(x,a=0)=[(i!=0&&(a=i);a)for i=x]

এটি এমন একটি ফাংশন gযা অ্যারে গ্রহণ করে এবং একটি অ্যারে প্রদান করে। আমরা a0 এ একটি অস্থায়ী পরিবর্তনশীল শুরু করি ইনপুটটির প্রতিটি উপাদানগুলির iজন্য i0 না হলে আমরা নির্ধারিত aকরি i। যদি i0 aহয় তবে সেই পুনরাবৃত্তিতে পরিবর্তন হয় না। আমরা aআউটপুট অ্যারেতে সেই অবস্থানের মান হিসাবে ব্যবহার করি ।


3

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

*.map: {$_=($^a||$_)}

ব্যবহার:

# store the Whatever lambda as a subroutine
# just so that we don't have to repeat it
my &code = *.map: {$_=($^a||$_)}

say code [1, 0, 2, 0, 7, 7, 7, 0, 5, 0, 0, 0, 9];
# (1 1 2 2 7 7 7 7 5 5 5 5 9)

say [-1, 0, 5, 0, 0, -7].&code;
# (-1 -1 5 5 5 -7)

say ([1, 0, 0, 0, 0, 0],[-1, 0, 5, 0, 0, -7]).map: &code;
# ((1 1 1 1 1 1) (-1 -1 5 5 5 -7))

3

আর, 36 বাইট

function(x)x[cummax(seq(a=x)*(!!x))]

আসুন দেখুন কীভাবে এটি ব্যবহার করে কাজ করে x=

c(1, 0, 2, 0, 7, 7, 7, 0, 5, 0, 0, 0, 9)

উদাহরণ হিসাবে। এখানে, !!xযৌক্তিক (সত্য / মিথ্যা) ভেক্টর হবে:

c(T, F, T, F, T, T, T, F, T, F, F, F, T)

এছাড়াও, seq(a=x)সূচকগুলির একটি ভেক্টরকে ততক্ষণ দেয় x:

c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)

আমরা উভয়কে গুণ করি:

c(1, 0, 3, 0, 5, 6, 7, 0, 9, 0, 0, 0, 13)

আমরা ক্রমবর্ধমান সর্বোচ্চ গ্রহণ:

c(1, 1, 3, 3, 5, 6, 7, 7, 9, 9, 9, 9, 13)

অবশেষে, আমরা শেষ ভেক্টরটি সূচকগুলি হিসাবে থেকে নিষ্কাশনের জন্য ব্যবহার করি x:

c(1, 1, 2, 2, 7, 7, 7, 7, 5, 5, 5, 5, 9)


3

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

param($x)$x|%{($t=($_,$t)[!$_])}

$x|%{...}স্ক্রিপ্ট প্রতিটি উপাদান জন্য ব্লক করে $x($_,$t)বর্তমান উপাদানগুলির একটি অ্যারে এবং $tএবং এর [!$_]অর্থ আমরা !$_অ্যারেতে সূচি ব্যবহার করি । সূচকটি 0শূন্য-না-থাকা উপাদানগুলির জন্য (মিথ্যা) হবে এবং 1(সত্য) যখন বর্তমান উপাদানটি শূন্য হয়, তাই $tবর্তমান উপাদান বা হবে $t। বন্ধনীগুলি অ্যাসাইনমেন্ট এক্সপ্রেশনকে ঘিরে তাই এর মানটি নির্গত হয়। প্যারান্থেস ছাড়াই এটি কেবল "শান্ত" কাজ হবে $t


@ টিমিডি, আপনি অবশ্যই ঠিক বলেছেন। আমি জুড়েছেন param($x)যা প্রোগ্রামে এই সক্রিয়। আউটপুট হল পূর্ণসংখ্যার একটি সংগ্রহ যা আপনি প্রোগ্রামটিতে প্যারামিটার হিসাবে জমা দিতে পারেন, যেমন $a = .\program.ps1 1,2,3,4,0,0,5এবং তারপরে .\program.ps1 $aপ্রত্যাশা অনুযায়ী কাজ করে।
ডানকো দুর্বিć

$args|%{($p=($_,$p)[!$_])}- 26 টি বাইট $ আরোগুলি ব্যবহার করে।
টেসেল্লাটিংহেকলার

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