আপনি যা দেখেন তা বলুন


30

"দেখুন এবং বলুন" বা "আপনি যা দেখছেন তা বলুন" ক্রমটি সংখ্যাগুলির একটি সিরিজ যেখানে প্রতিটি শেষ বর্ণন করে।

1
11 (one one)
21 (two ones)
1211 (one two, one one)
111221 (one one, one two, two ones)
312211 (three ones, two twos, one one)

এবং অন এবং এ ... https://oeis.org/A005150

যাইহোক, এটি একটি নিয়মিত কোড গল্ফ চ্যালেঞ্জ (কমপক্ষে বাইট গণনা জয়) এমন একটি প্রোগ্রাম তৈরি করতে যাতে দুটি আর্গুমেন্ট, একটি প্রাথমিক সংখ্যা এবং পুনরাবৃত্তির পরিমাণ লাগে। উদাহরণস্বরূপ আপনি যদি "1" এবং "2" প্লাগ ইন করেন তবে ফলাফলটি "21" হবে। আপনি যদি "2" এবং "4" এ প্লাগ করেন তবে ফলাফলটি "132112" হবে। আনন্দ কর!


2
আমরা কি সংখ্যার একটি তালিকা পেতে / ফিরিয়ে দিতে পারি?
LegionMammal978

5
আমি প্রয়োজনে পুরানো প্রশ্নগুলি ডুপ হিসাবে বন্ধ করব; এটিতে কোনও বিধিনিষেধ নেই।
lirtosiast

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

3
আমাদের কি সংখ্যার তালিকা হিসাবে আউটপুট দেওয়ার অনুমতি দেওয়া হচ্ছে?
lirtosiast

উত্তর:


9

পাইথ, 10 8 বাইট

@ ফ্রাইআমডেজিগম্যান -2 বাইটস

ussrG8Qz

ব্যাখ্যা:

            Implicit: z=first line as string, Q=second line
u         the result of reducing lambda G:
  s s rG8   flattened run-length-encoded G
  Q       Q times
  z     starting with z

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


তবে কমপক্ষে আমি বন্ধনী এবং কমাগুলি আউটপুট করি না; কেবলমাত্র সংখ্যার মধ্যে ফাঁকা স্থান :
লুইস মেন্ডো

2
সোভিয়েত রাশিয়ায়ussrG8Qz
mbomb007

8

সিজেম, 8 বাইট

q~{se`}*

ইনপুট ফর্ম্যাট হ'ল প্রথম সংখ্যা, পুনরাবৃত্তি দ্বিতীয়, কিছু শ্বেত স্পেস দ্বারা পৃথক।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

q~   e# Read and evaluate input, dumping both numbers on the stack.
{    e# Run this block once for each iteration...
  s  e#   Convert to string... in the first iteration this just stringifies the input
     e#   number again. In subsequent iterations it flattens and then stringifies the
     e#   array we get from the run-length encoding.
  e` e#   Run-length encode.
}*

অ্যারে মুদ্রিত হওয়ার আগেও সমতল হয় ফলে ফলাফলটি কেবল প্রয়োজনীয় সংখ্যা।


6

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

F=(a,b)=>b?F(a.replace(/(.)\1*/g,c=>c.length+c[0]),b-1):a

পুনরাবৃত্তি এই সমস্যার জন্য ভাল কাজ করে। প্রথম প্যারামিটারটি স্ট্রিং হিসাবে প্রাথমিক সংখ্যা এবং দ্বিতীয়টি পুনরাবৃত্তির সংখ্যা।


আপনি একটি অদ্ভুত পুনরাবৃত্ত তরকারী দিয়ে তিনটি বাইট সংরক্ষণ করতে পারেন: b=>F=a=>b--?F(a.replace(/(.)\1*/g,c=>c.length+c[0])):aআমার উত্তরটি গলফ করার সময় আমি বুঝতে পেরেছিলাম যে এটি আপনার সাথে অনেকটা অভিন্ন;)
ETH প্রোডাকশনগুলি

4

এমএটিএল , 9 বাইট

:"Y'wvX:!

ইনপুটগুলি হ'ল: পুনরাবৃত্তির সংখ্যা, প্রাথমিক সংখ্যা।

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

:      % implicit input: number of iterations. Create vector with that size
"      % for loop
  Y'   %   RLE. Pushes two arrays: elements and numbers of repetitions.
       %   First time implicitly asks for input: initial number
  w    %   swap
  v    %   concatenate vertically
  X:   %   linearize to column array
  !    %   transpose to row array
       % implicitly end loop
       % implicitly display

আপনি পারেন একটি অ্যারের হিসাবে আউটপুট তারপর Pyth 8. থাকে
lirtosiast

@ থমাসকওয়া ভাল পয়েন্ট আমি ধরে
লুইস মেন্ডো

4

আর, 87 বাইট

function(a,n){for(i in 1:n){r=rle(el(strsplit(a,"")));a=paste0(r$l,r$v,collapse="")};a}

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

f=function(a,n){
    for(i in 1:n){                      # For 1...n
        r=rle(el(strsplit(a,"")))       # Run length encoding
        a=paste0(r$l,r$v,collapse="")   # concatenate length vector and values vector and collapse
    };
    a                                   # print final result
}

3

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

say (@*ARGS[0],*.trans(/(.)$0*/=>{$/.chars~$0})…*)[@*ARGS[1]]

এটি এতটুকু সংক্ষিপ্ত যে আমি এটি আপাতত পেতে পারি, কিছু কৌশলযুক্ত পতাকা এটি হ্রাস করতে পারে, আমি নিশ্চিত নই


3

রুবি, 63 বাইট

একটি সম্পূর্ণ প্রোগ্রাম, যেহেতু প্রশ্নটি এর জন্য জিজ্ঞাসা করছে। কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়।

i,n=$*
n.to_i.times{i=i.gsub(/(.)\1*/){"#{$&.size}#$1"}}
puts i

না, gsub!ব্যবহার করা যাবে না, কারণ স্ট্রিংগুলি $*হিমশীতল: /


-pবাইটস বাঁচাতে আপনি সম্ভবত পতাকাটি ব্যবহার করতে পারেন ? আপনি যদি এটি ব্যবহার করেন, এটি gsubSTDIN এর একটি লাইনে চালিত হয় যেন তা $_.gsub!। তারপরে কমান্ড লাইন আর্গুমেন্টটি পুনরাবৃত্তি হয় n,=$*, এবং অন্য ইনপুটটি STDIN থেকে পড়ে।
মূল্য কালি

3

রেটিনা , 46 45 27 বাইট

মার্টিন এটিকে গল্ফটিকে সাহায্য করার জন্য প্রচুর কাজ করেছিল।

+`(\d)(\1?)*(?=.*_)_?
$#2$1

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

বিন্যাসে ইনপুট নেয়:

<start><count>

<start> প্রাথমিক সংখ্যা।

<count> অ্যানারি অবস্থায় রয়েছে, সমস্ত আন্ডারস্কোর হয় এবং এটি হল যে কতগুলি পুনরাবৃত্তি সঞ্চালিত হয়।

একক পুনরাবৃত্তি, 20 16 বাইট:

(\d)(\1?)*
$#2$1


2

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

(m,n)=>[...Array(n)].map(_=>m=m.replace(/(.)\1*/g,x=>x.length+x[0]))&&m

স্ট্রিং এবং একটি সংখ্যা হিসাবে ইনপুট নেয়।


('1',2)আমাকে দেয় 12, যখন এটি হওয়া উচিত 21। প্রতিস্থাপনের অক্ষরের আগে আপনার দৈর্ঘ্যটি আসা উচিত।
Mwr247

@ Mwr247 ওফস, দুঃখিত।
ETH প্রোডাকশনগুলি

2

পার্ল 5, 50 বাইট

$_=pop;for$i(1..pop){s/(.)\1*/length($&).$1/ge}say

আর্গুমেন্টগুলি বিপরীত ক্রমে (বীজের পরে পুনরাবৃত্তির সংখ্যা) হয়। উদাহরণ:

> perl -E'$_=pop;for$i(1..pop){s/(.)\1*/length($&).$1/ge}say' 4 2
132112
> perl -E'$_=pop;for$i(1..pop){s/(.)\1*/length($&).$1/ge}say' 0 2
2
> perl -E'$_=pop;for$i(1..pop){s/(.)\1*/length($&).$1/ge}say' 2 0
1110
> perl -E'$_=pop;for$i(1..pop){s/(.)\1*/length($&).$1/ge}say' 1 10
1110
> perl -E'$_=pop;for$i(1..pop){s/(.)\1*/length($&).$1/ge}say' 11 1
3113112221232112111312211312113211

সাব্রোটিন হিসাবে , আমি মনে করি $_পরিবর্তে এটি দিয়ে শেষ করে একটি বাইট শেভ করতে পারি say, আমি মনে করি, তবে আমি এটি পরীক্ষা করিনি। বর্তমান সমাধান একটি প্রোগ্রাম।
এমএস 210

2

05 এবি 1 ই , 9 বাইট (প্রতিযোগী নয়)

এমিগিনার মন্তব্যের কারণে সংশোধন করা হয়েছে, নীচে / সম্পাদনাগুলি দেখুন।

F.¡vygyÙJ

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


1
আমি মনে করি আপনি 2 টি আর্গুমেন্ট (প্রাথমিক সংখ্যা এবং পুনরাবৃত্তির সংখ্যা) নেওয়ার বিষয়ে অংশটি মিস করেছেন। ভাগ্যক্রমে আপনি কেবল Fশুরুতে যুক্ত করতে পারেন এবং যুক্তিগুলি হিসাবে নিতে পারেনiterations,initialNo
এমিগিনা

1
এবং এটির দ্বারা হারিয়ে যাওয়া বাইটটি প্রতিস্থাপনের Dgsমাধ্যমে পুনরায় পেতে পারে gy
এমিগিনা

@ এমিগনা yএই প্রসঙ্গে কি করছেন?
ম্যাজিক অক্টোপাস উরন

1
প্রথম y হিসাবে একই, লুপটিতে বর্তমান মানটি চাপুন। তাই y কে সদৃশ করার পরিবর্তে এবং এটিকে শীর্ষে সরিয়ে দেওয়ার পরিবর্তে, যখন আপনার প্রয়োজন হবে তখন আপনি এটি আবার চাপ দিন।
এমিগানা

@ ইমিগনা মনে হয় আমার এখনও অনেক কিছু শিখতে হবে।
যাদু অক্টোপাস উরন

2

আর , 61 57 বাইট

-4 জায়েসিকে ধন্যবাদ, আমি যখন নিশ্চিত ছিলাম যে এটি কোনও সহজ কাজ করা যায় না!

f=function(a,n)`if`(n,f(t(sapply(rle(c(a)),c)),n-1),c(a))

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


1
সামান্য গল্ফড: টিআইও
জেসি

সেই t(sapply(z,c))ডাকটি চালাক।
জে.ডো

1

গণিত, 81 73 বাইট

FromDigits@Nest[Flatten[(Tally/@Split@#)~Reverse~3]&,IntegerDigits@#,#2]&

আপনার কোডটি কোড হিসাবে প্রদর্শিত হতে চারটি স্পেস দিয়ে প্রস্তুত করুন :)
ওগাদে


1

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

Çα▲ì4↔┌j█♀

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

যথাযথ আইও ফর্ম্যাটে অনেকগুলি বাইট ব্যয় করুন ...

ব্যাখ্যা

ব্যাখ্যা করার জন্য আনপ্যাক করা সংস্করণ ব্যবহার করে।

DE|R{rm:f$e
D              Do `2nd parameter` times
 E             Convert number to digits
                   Starting from the `1st parmeter`
  |R           Convert to [element, count] pairs for each run
    {rm        Revert each pair
       :f      Flatten the array
         $     Convert array to string of digits
          e    Convert string of digits to integer

প্রয়োজনীয় অংশটি হ'ল D|R{rm:f(8 বাইট)।

প্রথম ইনপুটটি যদি অঙ্কের অ্যারে হিসাবে নেওয়া যায় তবে পুরো প্রোগ্রামটি 9 বাইটে লেখা যেতে পারে: অনলাইনে চালান এবং ডিবাগ করুন!


0

পাইথন 3, 138 বাইট

আমি পুনরাবৃত্তি পদ্ধতির ব্যবহার করেছি।

def g(a,b):
 if b<1:return a
 else:
  c,n=1,'';f,*a=str(a)+'_'
  for i in a:
   if i==f:c+=1
   else:n+=str(c)+f;f,c=i,1
  return g(n,b-1)

ফাংশন দুটি ints গ্রহণ করে, aএবং bবর্ণিত হিসাবে।

আমি এখানকার এন্ট্রিগুলি কতটা ক্ষুদ্র করে তাতে অবাক! হতে পারে কেউ আরও ভাল পাইথন পদ্ধতিটি নিয়ে আসবে।


0

পার্ল, 38 + 2 বাইট

for$i(1..<>){s/(.)\1*/(length$&).$1/ge}

-pপতাকা প্রয়োজন :

$ perl -pe'for$i(1..<>){s/(.)\1*/(length$&).$1/ge}' <<< $'1\n5'
312211

ইনপুটটি একাধিক লাইনের স্ট্রিং:

input number
numbers of iterations

যদি সমস্ত পদক্ষেপের পাশাপাশি প্রয়োজনীয় হয় তবে আমরা এটি নিম্নলিখিতটিতে পরিবর্তন করতে পারি, যা 44 + 2 বাইট:

$ perl -nE'for$i(1..<>){s/(.)\1*/(length$&).$1/ge,print}' <<< $'1\n5'
11
21
1211
111221
312211

0

পাইলন , 11

i:At,{n,A}j

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

i      # Get input from command line.
:A     # Initialize A
  t    # Set A to the top of the stack.
,      # Pop the top of the stack.
{      # Start a for loop.
 n     # Run length encode the stack.
  ,    # Seperate command and iteration
   A   # Repeat A times.
    }  # End for loop.
j      # Join the stack with '' and print it and then exit. 

0

স্মাইলব্যাসিক, 100 98 বাইট

DEF S N,T?N
WHILE""<N
C=C+1C$=SHIFT(N)IF C$!=(N+@L)[0]THEN O$=O$+STR$(C)+C$C=0
WEND
S O$,T-T/T
END

সমস্ত পদক্ষেপ মুদ্রণ। T/Tযখন টি 0 হয় তখন প্রোগ্রামটি শেষ হয়।





0

পাইথন 3.6, 100 98 93 বাইট

import re
f=lambda s,n:n and eval("f'"+re.sub(r'((.)\2*)',r'{len("\1")}\2',f(s,n-1))+"'")or s

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

নোট করুন এটি একটি ল্যাম্বডা তৈরি করে যা একটি স্ট্রিং এবং একটি পূর্ণসংখ্যা নেয় এবং একটি স্ট্রিং প্রদান করে। উদাহরণ:f('1', 5) == '312211'

সমস্ত পুনরাবৃত্তি অক্ষর ( ((.)\2*)রেজেক্স) সন্ধান করে, তাদের দৈর্ঘ্য এবং অক্ষর নিজেই ( r'{len("\1")}\2') এর বাইরে একটি এফ স্ট্রিং তৈরি করে , তারপরে এটি মূল্যায়ন করে। n and ...f(s,n-1)... or sকোনও সঠিক ফাংশন এবং লুপ সংজ্ঞা না দেওয়ার জন্য কাউন্টারে পুনরাবৃত্তি ব্যবহার করে ।

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