একটি পুস্তিকা মুদ্রণ করুন


39

বই পড়া সহজ, তবে বই ছাপানো কিছুটা জটিল হতে পারে। বুকলেট মুদ্রণ করার সময়, প্রিন্টারের বাম থেকে ডানে পড়ার জন্য পৃষ্ঠাগুলিকে একটি নির্দিষ্ট পদ্ধতিতে সাজানো দরকার। এটি যেভাবে করা হচ্ছে তা নীচের মতো একটি প্যাটার্ন ব্যবহার করে

n, 1, 2, n-1, n-2, 3, 4, n-3, n-4, 5, 6, n-5, n-6, 7, 8, n-7, n-8, 9, 10, n-9, n-10, 11, 12, n-11…

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

4 পৃষ্ঠার পুস্তিকা: 4, 1, 2, 3

8 পৃষ্ঠার পুস্তিকা: 8,1,2,7,6,3,4,5

12 পৃষ্ঠার পুস্তিকা: 12,1,2,11,10,3,4,9,8,5,6,7

16 পৃষ্ঠার পুস্তিকা: 16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9

20 পৃষ্ঠার পুস্তিকা: 20,1,2,19,18,3,4,17,16,5,6,15,14,7,8,13,12,9,10,11

কার্য

আপনার কাজটি হ'ল একটি পূর্ণসংখ্যা দেওয়া nযা 4 এর একাধিক, nপৃষ্ঠাগুলির একটি বই মুদ্রণ করতে ব্যবহৃত হতে পারে এমন একটি সংখ্যার অ্যারে প্রদর্শন করুন ।

দ্রষ্টব্য: যতক্ষণ না আউটপুটটি স্পেস, কমা, হাইফেন বা প্রথম বন্ধনী দ্বারা নির্ধারিত সঠিক সংখ্যা উত্পন্ন করে, সমাধানে যাওয়ার জন্য যে কোনও পদ্ধতি ব্যবহার করা যেতে পারে

এটি একটি প্রশ্ন তাই উত্তর বাইটে স্কোর করা হবে, কম বাইট জেতার সাথে।


আমরা কি গ্যারান্টিযুক্ত যে ইনপুট সর্বদা 4 বা এমনকি একটি সংখ্যার দ্বারা বিভাজ্য হবে? যেভাবেই হোক, আপনি আরও কয়েকটি পরীক্ষার মামলা যুক্ত করতে পারেন, দয়া করে? আর PPCG করার :) স্বাগত জানাই
রোমশ

8
পিপিসিজিতে আপনাকে স্বাগতম এবং প্রথম চ্যালেঞ্জ! নোট করুন যে আমরা স্যান্ডবক্সে নতুন চ্যালেঞ্জগুলি পোস্ট করার আগে তাদের প্রস্তাব দেওয়ার প্রস্তাব দিই ।
অলিভার নিন

1
আপনার ইনপুট 4 একটি একাধিক করা প্রয়োজন
tisaconundrum

1
প্রয়োজন হলে ফাঁকা পৃষ্ঠাগুলি পূরণ করে কোনও মান সমর্থন করার জন্য (তবে তুচ্ছ হতে পারে) খুব সুন্দর হবে (আরেকটি চ্যালেঞ্জ, সম্ভবত?)
ব্যারানকা

1
আমরা কি কমা পরিবর্তে একটি স্পেস, হাইফেন বা অন্যান্য ডিলিমিটার দিয়ে অ্যারেটি সীমিত করতে পারি?
টহপর্স

উত্তর:



13

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

@ রিকহিচককের সহায়তায় 4 বাইট সংরক্ষণ করা হয়েছে

f=(n,k=1)=>n<k?[]:[n,k,k+1,n-1,...f(n-2,k+2)]

ডেমো


অপরিবর্তনীয়, 51 বাইট

n=>[...Array(n)].map((_,i)=>[2*n-i,,++i][i&2]+1>>1)

ডেমো


47 বাইট: f=(n,a=1)=>n<a+3?[]:[n,a,a+1,n-1,...f(n-2,a+2)]
রিক হিচকক

1
@ রিক হিচকক n<aআসলেই যথেষ্ট, তাই 4 বাইট সংরক্ষণ করা হয়েছে। ধন্যবাদ!
আর্নল্ড

6

পাইথন 2, 99 93 88 58 56 55 বাইট

f=input()
for i in range(1,f/2,2):print-~f-i,i,i+1,f-i,

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

অপ্রয়োজনীয় ইন্ডেন্টেশন সরিয়ে -6 বাইটস, ধন্যবাদ অলিভার নী

শর্তাধীন পরিবর্তন করে -5 বাইট, ধন্যবাদ লুইস মেন্ডো

প্রিন্ট বিবৃতি অপ্টিমাইজ করে -30 বাইট, ধন্যবাদ আর্নল্ড পামার

লুপটি এক লাইনে রেখে -2 বাইটস, ধন্যবাদ নেডেলা ২০০৪

কিছু উইজার্ডারি করে -1 বাইট, ধন্যবাদ মিঃ এক্সকোডার


4 এর পরিবর্তে 1 স্পেস ব্যবহার করে বাইটস সংরক্ষণ করুন
অলিভার নি

ওহ হ্যাঁ, আমি সবসময় সে সম্পর্কে ভুলে যাই। ধন্যবাদ।
লিরিকলি

1
-29 বাইট ব্যবহার করে একটি lambda(যদিও এটি আলাদা জবাবের পক্ষে যথেষ্ট আলাদা হতে পারে)।
notjagan

@ নোটজাগান এগিয়ে যান এবং আপনি চান তা পোস্ট করুন।
লিরিকলি

আপনার প্রিন্টটি কিছুটা পরিবর্তন করে 58 বাইট এটি এখন f-i+1,i,i+1,f-iশর্তসাপেক্ষে সর্বশেষ মানটি মুদ্রণের পরিবর্তে প্রতিটি লুপে মুদ্রণ করে। এটি প্রাথমিকটি অপসারণেরও অনুমতি দেয় print f,
আর্নল্ড পামার

6

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

lambda n:map(range(1,n+1).pop,n/4*[-1,0,0,-1])

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

[1..n]পুনরাবৃত্তি প্যাটার্নে সামনে এবং পিছন থেকে পরিসর এবং পপগুলি উত্পন্ন করেback, front, front, back, ...


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

f=lambda n,k=1:n/k*[0]and[n,k,k+1,n-1]+f(n-2,k+2)

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

প্রথম 4 টি উপাদান তৈরি করে, তারপরে পুনরাবৃত্তভাবে উপরের মানটি n2 টি কমে যায় এবং নিম্ন মান k2 দিয়ে বৃদ্ধি পায়।


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

lambda n:[[n-i/2,i/2+1][-i%4/2]for i in range(n)]

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

নিম্ন বা উচ্চতর মান গ্রহণ করা যায় কিনা সে জন্য বুলিয়ান হিসাবে iব্যবহার করে সরাসরি তালিকার 'ম' মান উত্পন্ন করে -i%4/2


6

পাইথন 3 , 68 63 62 বাইট

Not5 বাইটস @ নোটজাগানকে ধন্যবাদ (স্পেসগুলি সরিয়ে এবং এর [*...]পরিবর্তে ব্যবহার করে list())।

@Ovs ( *1পরিবর্তে [:]) −1 বাইট ধন্যবাদ

def f(n):r=[*range(1,n+1)];return[r.pop(k%4//2-1)for k in r*1]

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



1
আপনি -1 বাইটের r*1পরিবর্তে ব্যবহার করতে পারেনr[:]
ovs

5

এমএটিএল , 19 17 10 বাইট

:t"0&)@o?P

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

ব্যাখ্যা

:          % Implicitly input n. Push range [1 2 ... n]
t          % Duplicate
"          % For each (that is, do n times)
  0&)      %   Push last element, and then subarray with remaining elements
  @        %   Push 1-based iteration index
  o?       %   Is it odd? If so
    P      %     Reverse subarray of remaining elements
           %   Implicit end
           % Implicit end
           % Implicitly display stack

5

জেলি ,  12  11 বাইট

11 টি বাইটে উন্নত, "সম্মিলন পদ্ধতি":

9Bṁ×ḶṚÆ¡‘Œ?

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

কিভাবে?

এটি ক্রম গণনার গণনা এবং কল্পিত সংখ্যা সিস্টেম ব্যবহার করে:

9Bṁ×ḶṚÆ¡‘Œ? - Link n                        e.g. 16
9B          - nine in binary                     [1,0,0,1]
  ṁ         - mould like n                       [1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1]
    Ḷ       - lowered range(n)                   [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
   ×        - multiply                           [0,0,0,3,4,0,0,7,8,0,0,11,12,0,0,15]
     Ṛ      - reverse                            [15,0,0,12,11,0,0,8,7,0,0,4,3,0,0,0]
      Æ¡    - convert from factorial base        19621302981954 (=15*15!+12*12!+...+3*3!)
        ‘   - increment                          19621302981955 (we actually wanted 1*0! too)
         Œ? - shortest permutation of natural numbers [1,2,...] that would reside at that
            -   index in a sorted list of all permutations of those same numbers
            -                                    [16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9]

অসমর্থিত 12 বাইটার, "বুনন প্যাটার্নস":

RṚ‘żRs2Z€FḊṁ

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

কিভাবে?

এটি সহজ পদ্ধতির, এটি দুটি স্ট্র্যান্ড তৈরি করে, তাদেরকে আন্তঃলম্বিত করে এবং তারপরে আলগা প্রান্তগুলি ছাঁটাই:

RṚ‘żRs2Z€FḊṁ - Link: n                      e.g. 8
R            - range(n)                          [1,2,3,4,5,6,7,8]
 Ṛ           - reverse                           [8,7,6,5,4,3,2,1]
  ‘          - increment                         [9,8,7,6,5,4,3,2]
    R        - range(n)                          [1,2,3,4,5,6,7,8]
   ż         - zip (interleave)                  [[9,1],[8,2],[7,3],[6,4],[5,5],[4,6],[3,7],[2,8]]
     s2      - split into chunks of length 2     [[[9,1],[8,2]],[[7,3],[6,4]],[[5,5],[4,6]],[[3,7],[2,8]]]
       Z€    - transpose €ach (cross-stitch?!)   [[[9,8],[1,2]],[[7,6],[3,4]],[[5,4],[5,6]],[[3,2],[7,8]]]
         F   - flatten                           [9,8,1,2,7,6,3,4,5,4,5,6,3,2,7,8]
          Ḋ  - dequeue (removes excess start)    [8,1,2,7,6,3,4,5,4,5,6,3,2,7,8]
           ṁ - mould like n (removes excess end) [8,1,2,7,6,3,4,5]

এই হল চালাক। +1
এরিক দ্য আউটগল্ফার

4

অক্টাভা , 43 36 বাইট

সি (জিসিসি) এ এই উত্তরটির একটি বন্দর পাওয়া যাবে

@(n)[n-(k=1:2:n/2)+1;k;k+1;n-k](:)';

ব্যাখ্যা

  1. k=1:2:n/2: n/2২ থেকে ২ পদক্ষেপে একটি রৈখিক ক্রম উত্পন্ন করে দেখুন নোট করুন এটি পরবর্তী পদক্ষেপে অবিলম্বে ব্যবহৃত হয়।
  2. [n-k+1;k;k+1;n-k]: একটি 4 সারি ম্যাট্রিক্স তৈরি করে যে প্রথম সারিটি n, n-2, n-4...নীচে ক্রম তৈরি করে n-(n/2)+2, দ্বিতীয় সারিটি 1, 3, 5...উপরে n/2 - 1, তৃতীয় সারিটি দ্বিতীয় সারিটি 1 দ্বারা যুক্ত হয় এবং চতুর্থ সারিতে প্রথম সারিটি 1 দ্বারা যুক্ত করা হয়।
  3. [n-k+1;k;k+1;n-k](:)': এটি এই ম্যাট্রিক্সের সমস্ত কলামকে একক কলাম ভেক্টর তৈরি করতে বাম থেকে ডানে একসাথে স্ট্যাক করে এবং আমরা সহজে প্রদর্শনের জন্য এটি একটি সারি ভেক্টরে স্থানান্তর করি। কলামগুলিকে একসাথে এইভাবে স্ট্যাক করা সুনির্দিষ্টভাবে পছন্দসই ক্রমটি তৈরি করে।

মনে রাখবেন এটি একটি বেনামে ফাংশন, সুতরাং এটি ব্যবহারের আগে আপনি এটি কোনও ভেরিয়েবলের কাছে বরাদ্দ করতে পারেন, বা ansফাংশন তৈরির পরে তৈরি হওয়া বিল্ট-ইন ভেরিয়েবলটি ব্যবহার করতে পারেন ।

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


1
হাই, আমি মনে করি আপনি এটি একটি বেনাম ফাংশন তৈরি করে ছোটও করতে পারেন, সুতরাং আপনাকে ইনপুট কল করতে হবে না। এই লিঙ্কটি দেখুন: gnu.org/software/octave/doc/v4.0.3/…
মিশথন

1
পছন্দ করুন কোডটি একাধিক বিবৃতি ছিল বলে আমি মূলত এটি করেছি। আমি এটিতে আরও একটি ক্র্যাক নিয়েছিলাম তাই কলটি সরিয়ে inputফেললাম এবং বেস বর্ধিত ভেক্টর সংরক্ষণ করে আমি সিনট্যাক্সটিকে আরও কিছুটা আপত্তি জানালাম যেহেতু আমি প্রথম সারিটি তৈরি করছিলাম এবং nআসল বেনাম ফাংশন ইনপুট থেকে নিজেই ইনপুট নিচ্ছিলাম যাতে আমি এখন এটিতে ফিট করতে পারি একটি বিবৃতি। ধন্যবাদ!
রায়রিং - মনিকা

3

আর , 48 বাইট (উন্নত)

@ জিউজ্পে -7 বাইটের জন্য ধন্যবাদ!

n=scan();(x=order(1:n%%2))[order(-(n/2+.5-x)^2)]

কৌতুকটি x=1:n;x[order(x%%2)]সমান order(1:n%%2)

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

আর , 55 বাইট (মূল)

Golfed

n=scan();x=1:n;x=x[order(x%%2)];x[order(-(n/2+.5-x)^2)]

মন্তব্যে অসম্পূর্ণ

nস্টিডিন থেকে পড়ুন ।

n=scan()

x1 থেকে পৃষ্ঠাগুলির ক্রম হিসাবে সংজ্ঞায়িত করুন n

x=1:n

পৃষ্ঠাগুলি অর্ডার করুন যাতে পৃষ্ঠাগুলিও অসম পৃষ্ঠাগুলির আগে।

x=x[order(x%%2)]

বইটিকে কেন্দ্র করে গণনা করে কেন্দ্রের উত্স অনুযায়ী পৃষ্ঠাগুলি অবতরণে অর্ডার করুন n/2+.5

x[order(-(n/2+.5-x)^2)]

8 পৃষ্ঠা সহ উদাহরণ:

  • কেন্দ্রটি 4.5;
  • পৃষ্ঠাগুলি 1 এবং 8 কেন্দ্র থেকে সর্বাধিক দূরের, তবে 8 টি সমান হওয়ায় 8 টি প্রথম আসে;
  • পৃষ্ঠাগুলি 2 এবং 7 কেন্দ্র থেকে পরবর্তী সর্বাধিক দূরবর্তী, তবে 2 সমান হিসাবে 2 হিসাবে প্রথম আসে;
  • ইত্যাদি।

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


1
সুন্দর, আমার (চুরি হওয়া) সমাধানের চেয়ে ভাল উপায়
জিউসেপ


1
কৌতুকটি লক্ষ্য করছিল (1:n)[order(1:n%%2)]যা একই রকম ছিলorder(1:n%%2)
জিউসেপ

2

গণিত, 54 53 45 বাইট by

Join@@Range[#][[(-1)^k{k,-k}]]~Table~{k,#/2}&

ব্যাখ্যা

Join@@Range[#][[(-1)^k{k,-k}]]~Table~{k,#/2}&  (* Input: # *)
                              ~Table~{k,#/2}   (* Iterate from k=1 to #/2 *)
      Range[#][[            ]]                 (* From {1..#}, take... *)
                      {k,-k}                   (* k-th and negative k-th element *)
                                               (* negative k-th = k-th from the end *)
                (-1)^k                         (* Reversed for odd k *)
Join@@                                         (* Join the result *)



2

জাভা 8, 84 72 বাইট

n->{for(int j=0;++j<n;System.out.printf("%d,%d,%d,%d,",n--,j++,j,n--));}

অথবা

n->{for(int j=0;++j<n;System.out.print(n--+","+j+++","+j+","+n--+","));}

-12 বাইটস সি # উত্তরে @LethalCoder এর মন্তব্য ধন্যবাদ ।

পুরানো উত্তর (৮৪ বাইট):

n->{int r[]=new int[n],i=1,N=n,J=1;for(r[0]=n;i<n;r[i]=-~i++%4<2?J++:--N);return r;}

ব্যাখ্যা:

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

n->{                  // Method with integer parameter and no return-type
  for(int j=0;++j<n;  //  Loop from 1 to `n` (exclusive)
    System.out.printf("%d,%d,%d,%d,",n--,j++,j,n--)
                      //   Print four numbers simultaneously
  );                  //  End of loop
}                     // End of method


1

সুইফট 3 , 74 বাইট

func g(f:Int){for i in stride(from:1,to:f/2,by:2){print(f-i+1,i,i+1,f-i)}}

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

সুইফট 3 , 60 বাইট

{f in stride(from:1,to:f/2,by:2).map{(f-$0+1,$0,$0+1,f-$0)}}

কিছু কারণে, আমি এখন পর্যন্ত চেষ্টা করেছি এমন কোনও অনলাইন পরিবেশে এটি কাজ করে না। আপনি এটি পরীক্ষা করতে চান তাহলে, করা var g=এটা সামনে, এবং একে ডাকতে print(g(12))মধ্যে Xcode (খেলার মাঠ)

এটি একটি Xcode খেলার মাঠে, 8.3.1 সংস্করণে চালিত করার পরে এখানে একটি চিত্র রয়েছে (চলমান সুইফট ৩.১):

এখানে চিত্র বর্ণনা লিখুন


1

কিউবিআইসি , 25 বাইট

[1,:/2,2|?b-a+1,a,1+a,b-a

ইনপুটটি% 4 হলেও প্রকৃত ছন্দটি 2-ভিত্তিক।

ব্যাখ্যা

[1,:/2,2|   FOR ( b=1; b <= <input>/2; b=b+2)               
?           PRINT
 b-a+1,     n
 a,         1
 1+a,       2
 b-a        n-1



1

আর , 64 60 বাইট

ধ্বংসাত্মকভাবে জহুরিও পেরিয়ে গেল ! তার উত্তর বেশ মার্জিত, এটি upvote যান।

n=scan();matrix(c(n-(k=seq(1,n/2,2))+1,k,k+1,n-k),4,,T)[1:n]

রাইরিংয়ের অক্টাভে উত্তর একটি বন্দর ।

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

আসল সমাধান (by৪ বাইট):

f=function(n,l=1:n)`if`(n,c(l[i<-c(n,1,2,n-1)],f(n-4,l[-i])),{})

পুনরাবৃত্তি ফাংশন।

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


প্রথমবারের মতো আমার কোনও উত্তর কখনও অনুপ্রেরণা হিসাবে ব্যবহার করেছে। ধন্যবাদ :)
রাইরিং - মনিকা পুনরায় ইনস্টল করুন 7'17

1
আপনাকে পরাজিত করা শক্ত ছিল, তবে আমি 55 টি বাইট উত্তর ( কোডগলফ.স্ট্যাকেক্সেঞ্জারএইচএ / 138045/13849 ) দিয়ে এটি পরিচালনা করেছি।
djhurio

1

বাশ + পার্ল + গ্রাফ + সোসুইটিস, 48 বাইট

perl -nE'say".bp
"x--$_'|groff|psbook>/dev/null

আউটপুট প্রদর্শন করে stderr। আউটপুটটিতে কিছু পিছনের আবর্জনা রয়েছে।

ব্যবহারের উদাহরণ:

$ echo 20 | perl -nE'say".bp
> "x--$_'|groff|psbook>/dev/null
[20] [1] [2] [19] [18] [3] [4] [17] [16] [5] [6] [15] [14] [7] [8] [13] [12] 
[9] [10] [11] Wrote 20 pages, 4787 bytes

0

পাইথ , 21 20 বাইট

sm[hK-QddhdK):1/Q2 2

পরীক্ষা স্যুট.

যদি নেস্টেড তালিকা হিসাবে আউটপুট দেওয়ার অনুমতি দেওয়া হয়:

পাইথ , 20 19 বাইট

m[hK-QddhdK):1/Q2 2

পরীক্ষা স্যুট.


ব্যাখ্যা

এসএম [এইচকে-কিউডিডিডিকি): 1 / কিউ 2 2 - সম্পূর্ণ প্রোগ্রাম।

 মি: 1 / কিউ 2 2 - ভেরিয়েবলের সাথে মানচিত্রের ওপরে পরিসীমা (1, ইনপুট () / 2,2) d।
  [) - এর সাথে একটি তালিকা তৈরি করুন:
   hK-Qd - ইনপুট - d + 1,
        d - d,
         এইচডি - ডি + 1 এবং
           কে - ইনপুট - d।
s - তালিকাটি ফ্ল্যাট করে এবং স্পষ্টভাবে মুদ্রণ করে।


0

সি #, 107 বাইট

int[]F(int p){var a=new int[p];for(int i=0,q=1;q<p;a[i++]=p--){a[i++]=p--;a[i++]=q++;a[i++]=q++;}return a;}

দুটি কাউন্টার রাখুন, একটি 1 থেকে শুরু করে, একটি পিতে। প্রতিটি লুপ পুনরাবৃত্তিতে প্রতিটি প্রবেশের পরে চারটি উপাদান এবং কেবল বৃদ্ধি বা হ্রাসের কাউন্টার লিখুন। কাউন্টারগুলি মাঝখানে মিলিত হলে থামুন।

int[] F(int p)
{
    var a = new int[p];
    for(int i = 0, q = 1; q < p; a[i++] = p--)
    {
        a[i++] = p--;
        a[i++] = q++;
        a[i++] = q++;
    }
    return a;
}

কোনও প্রতিনিধিতে পদ্ধতিটি রেখে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন। : আপনার কোড তারপর এই মত দেখাবে p=>{var a=new int[p];for(int i=0,q=1;q<p;a[i++]=p--){a[i++]=p--;a[i++]=q++;a[i++]=q++;}return a;};সঙ্গে, System.Func<int, int[]> f =হচ্ছে না bytecount মধ্যে অন্তর্ভুক্ত করা হয়েছে। এছাড়াও আপনি টিআইওতে একটি লিঙ্ক যুক্ত করতে পারেন, যা লোকেরা নিজেরাই আপনার কোডটি চেষ্টা করে দেখার অনুমতি দেওয়ার সময় খুব কার্যকর!
ইয়ান এইচ।

@IanH। ল্যাম্বদা ব্যবহার করার সময় পেছনের আধা কোলন বাদ দেওয়া যেতে পারে।
TheLethalCoder

ইনিশিয়ালাইজ qকরার 0এবং প্রাক বৃদ্ধি q<p-> ++q<pএবং তারপর একটি বাইট সংরক্ষণ করতে দ্বিতীয় পোস্টে বৃদ্ধি মুছে ফেলুন। দুটি পিছনের লুপের স্টেটমেন্টটি লুপের শেষ পর্যায়ে নিয়ে যান যাতে আপনি কোঁকড়ানো ধনুর্বন্ধনী বন্ধ করতে পারেন।
TheLethalCoder

2
যদি একটি পিছনে কমা অনুমোদিত হয় তবে নিম্নলিখিত 71 বাইটের জন্য কাজ করা হয় p=>{for(int q=0;++q<p;)System.Console.Write(p--+$",{q++},{q},{p--},");}Tio।
TheLethalCoder


0

পাইথ , 27 24 23 বাইট

-3 বাইট শেষে প্রান্তে পরিবর্তে মুদ্রণ করে।

-১ মিঃ এক্সকোডারকে ধন্যবাদ

V:1/Q2 2pjd[-QtNNhN-QNk

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

অথবা অনলাইন সংকলক / নির্বাহকের উপর

এটি পাইথের আমার প্রথম আসল প্রোগ্রাম, সুতরাং সম্ভবত আরও ভাল পদ্ধতি আছে যেগুলি সম্পর্কে আমি জানি না।

ব্যাখ্যা

V:1/Q2 2pjd[-QtNNhN-QNk
V:1/Q2 2                   # For N in range(1, Q/2, 2):
        pjd                # print " ".join(...),
           [-QtNNhN-QNk    # The list [n - (N-1), N, N + 1, n - N, ""] (n is input)

আমি কিছু উন্নতি পেয়েছি এবং সিদ্ধান্ত নিয়েছি তারা নিজের উত্তরটির প্রাপ্য।
মিঃ এক্সকোডার

উপায় দ্বারা, প্রতিস্থাপন FNসঙ্গে Vজন্য -1 বাইট
জনাব Xcoder

0

সি ++ (জিসিসি) , 89 84 68 বাইট

নামবিহীন জেনেরিক ল্যাম্বদা হিসাবে। n# পৃষ্ঠাগুলি (% 4 == 0) এবং Cফলাফলের জন্য একটি রেফারেন্স প্যারামিটার, একটি খালি ধারক vector<int>(কেবল push_backপ্রয়োজন)।

[](int n,auto&C){for(int i=0,j=0;i<n;C.push_back(++j%4<2?n--:++i));}

পূর্ববর্তী সমাধান:

#define P C.push_back(
[](int n,auto&C){for(int i=0;i<n;P n--),P++i),P++i),P n--));}

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

সামান্য শৃঙ্খলাবদ্ধ:

auto f=
[](int n,auto&C){
 for(int i=0,j=0;
     i<n;
     C.push_back(++j%4<2 ? n-- : ++i));
}

পূর্ববর্তী সমাধানটি সামান্য সরল :

auto f=
[](int n, auto&C){
 for(
  int i=0;
  i<n;
   P n--),
   P++i),
   P++i),
   P n--)
 );
}
;

এটি বেশ সহজবোধ্যভাবে বিকাশিত ছিল এবং পাটিগণিতগুলিতে কিছু ছোটখাটো অপ্টিমাইজেশন রয়েছে বলে নিশ্চিত।

  • সম্পাদনা 1: পাটিগণিতের একীকরণ 5 টি বাইট সংরক্ষণ করেছে
  • সম্পাদনা 2: একীকরণের পরে 4 টি পদক্ষেপ একত্রিত হয়েছিল

ব্যবহার:

std::vector<int> result;
f(n, result);

প্রিন্ট-ভেরিয়েন্ট, 77 বাইটগুলি তারিখের তারিখ

আপনি যদি মানগুলি মুদ্রণের জন্য জোর দিয়ে থাকেন তবে এই সমাধানটি রয়েছে:

[](int n,auto&o){for(int i=0;i<n;o<<n--<<' '<<++i<<' '<<++i<<' '<<n--<<' ');}

কোথায় oআপনার পছন্দসই std::ostream, মতstd::cout

ব্যবহার (যদি ২ য় ল্যাম্বদা নিযুক্ত করা হয় g):

g(n, std::cout);


0

লুয়া, 94 বাইট

এই চ্যালেঞ্জের জন্য আমি 2 টি পৃথক পদ্ধতি নিয়ে এসেছি যা উভয়ই 94 বাইট।

পদ্ধতি 1:

function f(n,i)i=i or 1 return n>i and('%s,%s,%s,%s,%s'):format(n,i,i+1,n-1,f(n-2,i+2))or''end

মন্তব্য কোড:

function f(n,i)
  i=i or 1
  -- On the first iteration i will be nil so I'm setting it's value to 1 if it is.

  return n>i and ('%s,%s,%s,%s,%s'):format(n,i,i+1,n-1,f(n-2,i+2)) or ''
  -- Here i return a ternary statement
  -- If n>i is true, it will return a string using string.format() and part of this is recursion
  -- If it's false, it will just return an empty string
end

পদ্ধতি 2:

function f(n,i)i=i or 1 return n>i and n..','..i..','..i+1 ..','..n-1 ..','..f(n-2,i+2)or''end

এই পদ্ধতিটি প্রথম পদ্ধতির মতো তবে আমি স্ট্রিং.ফর্ম্যাট () এর পরিবর্তে একটি সংক্ষিপ্ত স্ট্রিং ফিরিয়ে দিচ্ছি

উভয় পদ্ধতিতে আমি এন ধারণাটি ব্যবহার করেছি এবং আমি আরও ঘনিষ্ঠ হয়েছি


0

পিএইচপি, 51 + 1 বাইট

while($i<$k=&$argn)echo$k--,_,++$i,_,++$i,_,$k--,_;

একটি পেছনের ডিলিমিটার দিয়ে পৃষ্ঠা নম্বরগুলি আন্ডারস্কোর দ্বারা পৃথক করে মুদ্রণ করে।
পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন


0

জে , 22 বাইট

($,)_2|.`]\1+],@,.&i.-

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

ব্যাখ্যা

($,)_2|.`]\1+],@,.&i.-  Input: integer n
             ]          Identity
                     -  Negate
                  &i.   Form the ranges [0, 1, ..., n-1] and [n-1, ..., 1, 0]
                ,.      Interleave
              ,@        Flatten
           1+           Add 1
    _2    \             For each non-overlapping sublist of size 2
        `                 Cycle between these two operations
      |.                    Reverse for the first, third, ...
         ]                  Identity for the second, fourth, ...
  ,                     Flatten
 $                      Reshape to length n
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.