অবতীর্ণ অঙ্কের ক্রম


16

ভূমিকা

উদাহরণ হিসাবে, আসুন নম্বরটি নেওয়া যাক 7। এরপরে আমরা এটির সদৃশ করব এবং এর মধ্যে 7 টি স্পেস রাখি। আমরা এটি পেয়েছি:

7_______7

এর পরে, আমরা কোনও সংখ্যা হ্রাস করতে যাচ্ছি, যতক্ষণ না কোনও স্থান বাকি থাকে। আমরা 7 নম্বর জন্য নিম্নলিখিত পেতে:

7_______7    
 6543210

তারপরে, আমরা কেবল তাদের দুটিকে একত্রীকরণ করি, তাই:

7_______7    
 6543210  becomes

765432107

এটি এন = 7 এর আউটপুট হবে ।

সহজ মনে হচ্ছে, তাই না? এখন এন = 12 নেওয়া যাক । আমরা আবার দুটি সংখ্যার মধ্যে 12 টি স্পেস সন্নিবেশ করলাম যা আমাদের দেয়:

12____________12

তারপরে আমরা হ্রাস শুরু:

12____________12
  111098765432

এবং এটি অবশেষে আমাদের দেয়:

1211109876543212

আপনি দেখতে পাচ্ছেন যে, অবতরণ অংশটি 0 এ নয় 2 তে শেষ হবে

কার্য

একটি পূর্ণসংখ্যা দেওয়া হয়েছে, 1 টিরও বেশি , উপরে বর্ণিত অনুসারে উত্থানের ক্রমটি আউটপুট করুন।

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

Input   Output

2       2102
3       32103
4       432104
5       5432105
6       65432106
7       765432107
8       8765432108
9       98765432109
10      10987654321010
11      111098765432111
12      1211109876543212
13      13121110987654313
14      141312111098765414
15      1514131211109876515
20      201918171615141312111020
99      9998979695949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150499
100     1009998979695949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150100

এটি , সুতরাং কয়েকটি সংখ্যক বাইটের সাথে জমাটি জমা!


অভ্যন্তরীণ স্থানটি অবশ্যই পুরো সংখ্যা দিয়ে পূর্ণ হবে বা প্রয়োজনে আমাদের সংখ্যা কাটা উচিত? সে সম্পর্কে কোনও পরীক্ষার মামলা নেই (উদাহরণস্বরূপ 99)
edc65

@ edc65 আপনার প্রয়োজনে নম্বরগুলি কাটা উচিত। আমি পরীক্ষার কেস হিসাবে 99 যোগ করেছি।
আদনান

উত্তর:


8

সিজেম, 11 10 বাইট

q4*~,W%s<\

এটি অনলাইনে চেষ্টা করুন।ধরে নিই ইনপুটটিতে একটি ট্রেলিং নিউলাইন রয়েছে। (বাইট সংরক্ষণের জন্য @ জিমি ২৩০১৩ ধন্যবাদ।)

ব্যাখ্যা

প্রতিটি লাইনের শেষে স্ট্যাকটি সেই বিন্দুটির মতো দেখতে লাগে ( 4উদাহরণ হিসাবে ব্যবহার করে )।

q4*  e# Push input x 4 times, separated by newlines. ["4\n4\n4\n4\n"]
~    e# Evaluate, separating the 4's and converting them to numbers. [4 4 4 4]
,W%  e# Take the range of x and reverse it. [4 4 4 [3 2 1 0]]
s<   e# Cast to string and take the first x characters. [4 4 "3210"]
\    e# Swap the top two to get the final result. [4 "3210" 4]

9

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

n->"$n"join(n-1:-1:0)[1:n]"$n"

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

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

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


5

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

s=show
f n=s n++take n(s=<<[n-1,n-2..])++s n

ব্যবহারের উদাহরণ: f 14-> "141312111098765414"


5

জাভাস্ক্রিপ্ট (ES6), 55 52 বাইট

n=>n+[...Array(m=n)].map(_=>--m).join``.slice(0,n)+n

সম্পাদনা: @ ওয়াশিংটনগুয়েডসকে 3 বাইট সংরক্ষণ করা হয়েছে


@ ওয়াশিংটনগুয়েডস বাহ, আমি কখনই ব্যবহার করবো বলে মনে হয় না .keys()
নীল

.keys()ভালো হয় .reduce। কাজের সঠিক সরঞ্জাম, তবে আপনি সর্বদা এমন কিছু সন্ধান করেন যা সেই বিশেষ ক্ষেত্রে আরও ভাল করতে পারে
edc65

4

পাইথন 2, 82 72 58 53 বাইট

lambda x:`x`+''.join(map(str,range(x)[::-1]))[:x]+`x`

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

আমাকে শেখানোর জন্য @ অ্যালেক্সকে ধন্যবাদ জানায় যে repr(x)= `x`আমাকে একগুচ্ছ বাইট সংরক্ষণ করছে!


3

পাইথ, 11 বাইট

++Q<jk_UQQQ

দুটি বিকল্প সংস্করণ, যা সবগুলিও 11 বাইট ( দীর্ঘশ্বাস ):

s[Q<jk_UQQQ
pQp<jk_UQQQ
  Q           the input
       UQ     [0, 1, ..., input-2, input-1]
      _       reverse
    jk        join on empty string
   <     Q    first (input) characters
          Q   the input again
++            concatenate everything so it prints on one line

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



3

জেলি, 10 বাইট

Ȯ’r0DFḣ³Ḍ³

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

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

Ȯ’r0DFḣ³Ḍ³  Main link. Input: n

Ȯ           Print n.
 ’          Decrement to yield n - 1.
  r0        Create a range from n - 1 to 0.
    D       Convert each integer to base 10 (array of decimal digits).
     F      Flatten the resulting array.
      ḣ³    Keep the first n elements.
        Ḍ   Convert from base 10 to integer.
         ³  Print the integer and set the return value to n.
            (implicit) Print the return value.


2

ভিটসি, 35 বাইট

যেহেতু ভিট্টি সংখ্যার বাইরে স্ট্রিংগুলি তৈরি করবেন সে সম্পর্কে সচেতন নন, তাই আমি দ্বিতীয় লাইনের দশমিক স্থানে সংখ্যার দৈর্ঘ্য সন্ধান করে প্রয়োগ করেছি।

V0VVNHVv[XDN1mv$-DvD);]VN
1a/+aL_1+

ব্যাখ্যা:

V0VVNHVv[XDN1mv$-DvD);]VN
V                          Save the input as a global final variable.
 0V                        Push 0, push input.
   VN                      Output the input.
     H                     Push the range 0...intput.
      Vv                   Push the input, then save it as a temp variable.
        [             ]    Do the stuff in brackets infinitely or until exited.
         X                 Remove the top item of the stack.
          DN               Duplicate, then pop as output.
            1m             Calls the first line index, retrieving length.
              v            Pop the temp var and push it to the stack.
               $           Switch the top two items of the stack. 
                -          Subtract them.
                 Dv        Duplicate, then pop one as a temp var.
                   D);     If it's zero, exit the loop.
                       VN  Output the global var.

1a/+aL_1+
1a/+       Add .1. This makes sure we don't throw errors on input 0.
    a      Push ten.
     L     Pop the top item as n, push the log base n of second to top.
      _    Make it an int.
       1+  Add 1.

অনলাইনে চেষ্টা করে দেখুন!

লোকেদের জন্য ভার্বোজ মোড:

save top as permanent variable;
push 0;
save top as permanent variable;
save top as permanent variable;
output top as number;
push all ints between second to top and top;
save top as permanent variable;
save top as temporary variable;
begin recursive area;
remove top;
duplicate top item;
output top as number;
push 1;
goto top method;
save top as temporary variable;
switch the top two items;
subtract top two;
duplicate top item;
save top as temporary variable;
duplicate top item;
if (int) top is not 0;
generic exit;
end recursive area;
save top as permanent variable;
output top as number;
:push 1;
push 10;
divide top two;
add top two;
push 10;
push ln(top);
replace top with int(top);
push 1;
add top two;

দেখে মনে হচ্ছে ভার্বোজ মোড এর সংজ্ঞাতে ভুল L, এখনই এটি ঠিক করে (যদিও প্রশ্নটি আপডেট করবে না)।
অ্যাডিসন ক্রম্প

শুধু কৌতূহলী, আপনি কীভাবে প্রোগ্রামটির শেষে এই পদ্ধতিটি কার্যকর করতে বাধা দেন? নতুন লাইনের চরিত্রটি কি প্রোগ্রামটি ফিরে / প্রস্থান করার সিগন্যাল?
LegionMammal978

@ লিজিয়নম্যামাল978 কল্পনা করুন যে প্রতিটি ভিট্টি প্রোগ্রামের প্রথম লাইনটি "মূল" পদ্ধতি এবং অন্যান্য সমস্ত লাইনই public static voidপদ্ধতি। এটি শেষ হয়ে গেলে মূল প্রোগ্রামটি শেষ করে। এটি কীভাবে এটি করে, নির্দেশাবলী একটি ধরণের রাখা হয় ArrayList<ArrayList<String[]>>, যেখানে প্রতিটি লাইন হ'ল হয় String[]। ফাইলটি কীভাবে লোড হয় তা দ্বারা প্রতিটি পদ্ধতি নতুন লাইনে বিভক্ত হয়, যার ফলে মূল পদ্ধতিটি অন্যান্য সমস্ত পদ্ধতি থেকে পৃথক হয়ে যায়।
অ্যাডিসন ক্র্যাম্প

এটি ব্যাখ্যা করে যে তিন স্তরের কেন প্রয়োজন। সুতরাং Stringএস নির্দেশাবলী, String[]গুলি পদ্ধতি (প্রথম এক প্রধান পদ্ধতি), এবং ArrayList<String[]>গুলি ক্লাস (প্রথম এক প্রধান শ্রেণি), সঠিক?
LegionMammal978

পছন্দ করুন :)
অ্যাডিসন ক্রম্প

2

খাঁটি বাশ, 49

eval printf -va %s {$[$1-1]..0}
echo $1${a::$1}$1

বা:

বাশ + কোর্টিলস, 48

echo $1$(seq $[$1-1] -1 0|tr -d \\n|head -c$1)$1

আমি নিশ্চিত নই যে এগুলি পরিধিটি সঠিকভাবে মূল্যায়ন করছে। উভয় পরীক্ষা করেই প্রান্তটির অর্ধেক মুদ্রণ করুন। অর্থাত $ 1 = 90, পরিসর শুধুমাত্র 45. নিচে, সে আমার প্রচেষ্টা "$ আমি (Eval প্রতিধ্বনি {$ 1..0}) জন্য; কি প্রতিধ্বনি -n $ i এর; সম্পন্ন; প্রতিধ্বনি $ 1" ছিল
rcjohnson

@rcjohnson আমি মনে করি এটি প্রয়োজনীয় আচরণ। N = 90 এর জন্য আউটপুটটি আপনি কী আশা করবেন?
ডিজিটাল ট্রমা

@rcjohnson যেমন এন = 12 এর জন্য আউটপুট হওয়া উচিত 12, তারপরে 11..0(বা 111098765432) এর প্রথম 12 টি অক্ষর এবং শেষ পর্যন্ত12
ডিজিটাল ট্রমা

ঠিক আছে বিবরণটি পুনরায় পড়ার পরে আমি দেখতে পাচ্ছি যে আপনি সঠিক। সমস্যাটি "স্পেসগুলি" পূর্ণসংখ্যা হিসাবে উল্লেখ করে।
rcjohnson

@rcjohnson হ্যাঁ, আমি মনে করি "স্পেস" অংশটি কেবল মধ্যবর্তী পদক্ষেপে প্রযোজ্য। চূড়ান্ত আউটপুটটি কেবল অঙ্কের একটি স্ট্রিং হওয়া উচিত।
ডিজিটাল ট্রমা

2

রেটিনা, 63 বাইট

.+
$0,y$0$*y$0$*x
x
$'_
(x)*_
$#1
+`(y+)y(.)
$2$1
,(\d+).*
$1$`

গল্ফ করার জন্য এখনও বেশ কিছু জায়গা আছে ...

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


হুঁ, আমি করতে বিবেচনা করছি $0মধ্যে $0$*ঐচ্ছিক পাশাপাশি, যখন পূর্ববর্তী টোকেন হয় একটি আক্ষরিক যা নম্বর (হিসাবে আপনার নয় yগুলি হয়) ... এই এইজন্য আমি আসলে যে বাস্তবায়ন হতে পারে।
মার্টিন এন্ডার

@ মার্টিনবাটনার আমি ভেবেছিলাম এটিই নতুন বৈশিষ্ট্য তবে বাস্তবে পরিণত হয়নি। :)
এলোমেলো

না, বর্তমানে এটি কেবলমাত্র প্রতিস্থাপনের শুরুতে কাজ করে। এটি বলেছিল, সম্ভবত আপনি এটি ব্যবহার করতে প্রথম এবং শেষ সংখ্যার ভূমিকা পরিবর্তন করতে পারেন?
মার্টিন ইন্ডার

2

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

VG:qPVXvG:)GVhh

সম্পাদনা (20 মে, 2016) লিঙ্কের কোডটি পরিবর্তিত হয়েছে ভাষা পরিবর্তনের কারণে XzinsteadXv

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

V                 % input n. Convert to string
 G:               % range [1,2,...,n]
   qP             % convert into [n-1,n-2,...,0]
     VXv          % convert to string, no spaces
        G:)       % take first n characters only
           GV     % push input as a string, again
             hh   % concat horizontally twice    



1

মিল্কিওয়ে 1.6.5 , 27 25 বাইট

I'::%{K£BCH=}<ΩHG<+<;+!

ব্যাখ্যা

I                        ` empty the stack
 '::                     ` push 3 copies of the input
    %{K£BCH=}            ` dump digits of reversed range(n) as strings [n-1...0]
             <ΩHG<+<;+   ` select the first nth digits and pad them with n
                      !  ` output

ব্যবহার

$ ./mw <path-to-code> -i <input-integer>

মিল্কিওয়ে কোন এনকোডিং ব্যবহার করে?
আদনান

উহহহ .. ইউটিএফ -8, আমি মনে করি হা। @ অ্যান্ডএন
জ্যাচ গেটস

এটি চালানোর চেষ্টা করার সময় আমি এই ত্রুটিটি পেয়েছি (হ্যাঁ, আমি একটি উইন্ডোজ স্কাম্ব্যাগ: পি)। আমি এটি আটকানো করেছি: I'::%{K£BCH=}<OHG<+<;+!একটি ইউটিএফ -8 এনকোডযুক্ত ফাইলে, তবে এটি কার্যকর হয় না।
আদনান

আমি যে ফাইলটি ব্যবহার করছি তার লিঙ্ক এখানে । @ অ্যান্ডএন
জাচ গেটস

1

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

{$_~([R~] ^$_).substr(0,$_)~$_}
{
  $_ # input
  ~  # string concatenated with
  ([R~] ^$_)    # all numbers up to and excluding the input concatenated in reverse
  .substr(0,$_) # but use only up to the input number of characters
  ~
  $_
}

ব্যবহার:

for 2,3,7,12,100 {
  say {$_~([R~] ^$_).substr(0,$_)~$_}( $_ )
}
2102
32103
765432107
1211109876543212
1009998979695949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150100

1

পার্ল, 43 + 2 = 45 বাইট

আমি খুশি যে আমি ব্যবহার করিনি reverseএবং নাও substr:

"@{[1-$_..0]}"=~s.\D..gr=~/.{$_}/;$_.=$&.$_

-plপতাকা প্রয়োজন ।

$ perl -ple'"@{[1-$_..0]}"=~s.\D..gr=~/.{$_}/;$_.=$&.$_' <<< 12
1211109876543212

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

                                            # '-p' read first line into `$_` and
                                            # auto print at the end
"@{[1-$_..0]}"                              # Create a list from -1-n..0 and
                                            # join it on space. This becomes:
                                            #   "-11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0"
              =~s.\D..gr                    # Remove all but digits:
                                            #   "11109876543210"
                        =~/.{$_}/;          # Match the n first characters from
                                            # the generated string
                                  $_.=$&.$_ # Append the match and the input

1

সি, 130 125 বাইট

#define p(x) printf("%i",x);
i,y,h;f(x){for(i=y=x;(i-=h)>=0;){p(y--)h=floor(log10(y))+1;}if(i+=h)p(h=floor(y/pow(10,i)))p(x)}

অবহেলিত সংস্করণ (ব্যাখ্যা সহ):

#define p(x) printf("%i",x);     // alias to print an integer
i,y,h;                           // helper variables
f(x){                            // function takes an integer x as arg
    for(i=y=x;(i-=h)>=0;){       // i -> the remaining space
                                 // y -> the current descending number
        p(y--)                   // print y (at first y==x)
        h=floor(log10(y))+1;     // h -> the number of digits in y-1
    }                            // do it until there is no more empty space
    if(i+=h)                     // if needs to chop the last number
        p(h=floor(y/pow(10,i)))  // chop and print (implicitly cast of double to int)
    p(x)                         // print x at the end
}                                // end function

স্পষ্টতই ডাবল থেকে ইন-তে h=floor(...)প্রবেশের অনুমতি দেয়#define p(x) 5 বাইট সংরক্ষণের ।

আদর্শের উপর পরীক্ষা।


1

আর, by 67 বাইট (ফাংশন হিসাবে)

# usage example : f(7)
f=function(i)cat(i,substr(paste((i-1):0,collapse=''),1,i),i,sep='')

আর, by৩ বাইট (এসটিডিআইএন থেকে ইনপুট)

i=scan();cat(i,substr(paste((i-1):0,collapse=''),1,i),i,sep='')

1

ব্রেইনফাক, 265 বাইট

এটি কেবল <10 নম্বর নিয়ে কাজ করবে

গল্ফযুক্ত সংস্করণটি এখানে চেষ্টা করে দেখুন :

>,------------------------------------------------[->+>+<<]>>[-<<+>>]<[[->+>+<<]>>[-<<+>>]<-]<[<]>[>[>]>+<<[<]>-]>[++++++++++++++++++++++++++++++++++++++++++++++++.>]++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++.

Ungolfed। এটি এখানে চেষ্টা করুন :

>
,
---------- Convert to base 10
----------
----------
----------
-------- 


[->+>+<<]>>[-<<+>>]<

Fill up the grid
[
[->+>+<<]>>[-<<+>>] //duplicate number like [5][0] -> [5][5]
<-
]

<[<]> Go to cell 1
[

>[>] Scan for zero
> Move one more
+ Add one
<< Move two back
[<] Scan for zero
> Move one forward
- Subtract One
]

> Move one forward into actual numbers
[
++++++++++ Convert to ascii
++++++++++
++++++++++
++++++++++
++++++++
.
>
]
++++++++++ Convert to ascii
++++++++++
++++++++++
++++++++++
++++++++
.
>
++++++++++ Convert to ascii
++++++++++
++++++++++
++++++++++
++++++++
.

,>>++++++[<++++++++>-]<[-<->]<এটি সংক্ষিপ্ত কোড দৈর্ঘ্যের সাথে 48 কে বিয়োগ করতে পারে
লিকি নুন


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