বর্ণমালা গাইড করুন


20

বর্ণমালা গাইড করুন

দিকনির্দেশগুলির একটি অ্যারে দেওয়া হয়েছে, যেখানে দিকনির্দেশগুলি নীচে হিসাবে সংজ্ঞায়িত করা হয়েছে:

NW  N  NE
W   .   E
SW  S  SE

বা সূচক হিসাবে (আপনি উপরের স্ট্রিংগুলির পরিবর্তে নির্দেশিকাগুলির জন্য এই সূচকগুলি ব্যবহার করতে পারেন):

0 1 2
3 . 4
5 6 7

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


সুতরাং, একটি দ্রুত উদাহরণ তাকান:

[E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1]

সর্বদা এ দিয়ে শুরু করুন A.

A

পূর্ব দিকে যাও বি।

A-B

দক্ষিণ পূর্ব দিকে সি যান

A-B 
   \
    C

উত্তর দিকে যাও

A-B D
   \|
    C

ওভাররাইটিং সি থেকে দক্ষিণে ফিরে যান

A-B D
   \|
    E

দক্ষিণ এবং এফ এবং জি উভয় চক্রের জন্য 2 চালিয়ে যান Continue

A-B D
   \|
    E
    |
    F
    |
    G

উত্তর পশ্চিম যান এইচ।

A-B D
   \|
    E
    |
  H F
   \|
    G

ওয়েস্ট যাও আই।

A-B D
   \|
    E
    |
I-H F
   \|
    G

জেতে উত্তর দিকে শেষ

A-B D
   \|
J   E
|   |
I-H F
   \|
    G

আপনি যে চূড়ান্ত মানটি ফিরে আসবেন তা হ'ল চূড়ান্ত গ্রাফটি বাম থেকে ডানদিকে উপরে থেকে নীচে পড়ে:

ABD
JE
IHF
G

এর ফলাফল:

ABDJEIHFG

এটি , সর্বনিম্ন বাইট-কাউন্ট জেতা।



1
আমরা কি আপনার প্রস্তাবিত মানের পরিবর্তে ইনপুট 7 স্বতন্ত্র জুটির মান নিতে পারি? উদাহরণস্বরূপ 0 এর পরিবর্তে আমরা [-1 -1] পাই বা 1 এর জন্য আমরা [-1 0] পাই?
rahnema1

@ rahnema1 না, ইনপুটটি বর্ণিত হিসাবে রয়েছে।
ম্যাজিক অক্টোপাস উরান

আমরা কি স্ট্রিংয়ের পরিবর্তে অক্ষরের একটি অ্যারে ফিরতে পারি
ক্রিটিক্সী লিথোস

2
এটা কি সম্ভব যে আপনি একটি পরীক্ষা ক্ষেত্রে যেখানে মান শেষ পর্যন্ত আসতে পারেন বাম এর Aযেমন যে Aপ্রথম ফলাফলের মুদ্রিত করা হবে না?
সুয়েভার

উত্তর:


6

এমএটিএল , 64 58 57 50 46 40 37 36 35 30 বাইট

O'!":<TUV '59-G)hYsIH$6#u64+c!

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

ব্যাখ্যা

O           % Push the number 0 to the stack
'!":<TUV '  % String literal
59-         % Converts this string literal into [-26 -25 -1 1 25 26 27 -27]. These
            % are deltas for the linear indexes into the matrix corresponding to each
            % of the directions. Note that the -27 is at the end since a 0 index wraps
            % around to the end
i)          % Grab the input and use it to index into the delta array 
h           % Horizontally concatenate this with the 0 (our starting point)
Ys          % Take the cumulative sum to get the absolute linear index (location) of
            % each successive letter
IH$6#u      % Find the index of the last (sorted) occurrence of each location
64+         % Add 64 to this index to create ASCII codes
c!          % Convert to character, transpose, and display

1
কি শান্তি! আমি ভেবেছিলাম মেন্ডো এটা করেছে! ভাল লাগল :)। সাধারণত তিনি আমার ম্যাট্রিক্স প্রশ্নগুলি জিতেন, অন্য কেউ এই ভাষাটি ব্যবহার করছেন তা দেখে ভাল good আমিও খুব শিখতে চেষ্টা করছি।
যাদু অক্টোপাস উরন

12

জাভাস্ক্রিপ্ট (ES6), 108 107 94 87 বাইট

তিতের জন্য ধন্যবাদ, একটি বৃহত 13 বাইট সংরক্ষণ করা!
এডসি 65 এর জন্য আরও 7 টি বাইট সংরক্ষণ করা হয়েছে!

let f =

a=>[i=9,...a].map(d=>r[p+=(d+=d>3)*9-d%3*8-28]=(++i).toString(36),r=[],p=646)&&r.join``

console.log(f([4,7,1,6,6,6,0,3,1]));

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

সূত্রটি নীচের অফসেটগুলিতে (d += d > 3) * 9 - d % 3 * 8 - 28দিকনির্দেশগুলি অনুবাদ করে 0..7:

0   1   2       -28 -27 -26
3   x   4  -->   -1  x   +1
5   6   7       +26 +27 +28

আমরা এই অফসেটগুলি পয়েন্টারটিকে pএক-মাত্রিক অ্যারেতে স্থানান্তর করতে rব্যবহার করি এবং ফলস্বরূপ অবস্থানে অক্ষরগুলি লিখি।

প্রারম্ভিক অক্ষর 'ক' সন্নিবেশ করানোর [i = 9, ...a]পরিবর্তে আমরা পুনরাবৃত্তি করি a। যেহেতু আমরা আরম্ভ iকরার 9একই সময়ে আমরা একটি বিশিষ্ট 54 অফসেট (জন্য উপরে থাকা সূত্রটির ফলাফলের পরিচয় করিয়ে d = 9)। প্রথম পুনরাবৃত্তির পর pসমান 646 + 54 = 700, যা উত্তর পশ্চিম থেকে 25 প্যাচসমূহ পর্যন্ত সমর্থন করার জন্য শুধু যথেষ্ট স্থান ছেড়ে: 25 * -28 = -700। এজন্যই pআরম্ভ করা হয় 646

তারপরে আমাদের চূড়ান্ত স্ট্রিং পেতে কেবল অ্যারে যোগদান করতে হবে। অক্ষরের মধ্যে অপরিবর্তিত মানগুলি কেবল এড়িয়ে যায় join()


d+=d>3,p+=d*9-d%3*8-2811 বাইট সাশ্রয় করে।
তিতাস

@ টিটাস ধন্যবাদ, দুর্দান্ত জায়গা! (আমি এখন iঅ্যারে সংজ্ঞা শুরু করতে পারি , আরও 2 টি বাইট সংরক্ষণ করে)
আর্নল্ড

যেমন ওপি নির্দিষ্ট করেছে যে লোয়ার (++i).toString(36)
केস

@ edc65 ডান ঠিক আছে। ধন্যবাদ!
আর্নল্ড

5

অক্টাভা, 145 138 131 123 105 103 90 87 85 বাইট

@(a){[~,k]=unique(cumsum([1 fix((z=a+(a>3))/3);1 mod(z,3)]'-1),'rows');[k'+64 '']}{2}

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

স্যুভার 2 বাইট সংরক্ষণ করার জন্য ধন্যবাদ !

পূর্ববর্তী উত্তর 103 বাইট:

@(a)[nonzeros(accumarray(cumsum([1 fix((z=a+(a>3))/3);1 mod(z,3)]'-1)+30,65:nnz(++a)+65,[],@max)')' '']

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

প্রথমে 145 বাইট চেষ্টা করুন

@(a){[x y]=find(~impad(1,1,1));c=cumsum([0 0;([y x]-2)(++a,:)]);c=c-min(c)+1;n=nnz(a);[nonzeros(sparse(c(:,1),c(:,2),65:n+65,'unique')')' '']}{5}

কিছু ব্যাখ্যা

@(a){
    [x y]=find([1 0 1]|[1;0;1]);                            %generate 2d coordinates corresponding to 1d input indices
    XY = [y x]-2;
    c=cumsum([0 0;XY(++a,:)]);                              %cumulative sum of coordinates to find position of characters
    c=c-min(c)+1;n=nnz(a);
    [nonzeros(sparse(c(:,1),c(:,2),65:n+65,'unique')')' ''] %using sparse matrix to place characters at specified positions
    }{5}

1
আমি বিশ্বাস করি যেহেতু imageআপনার বাইটোক্যান্টের প্যাকেজ অংশটি প্রয়োজন তাই চিত্র প্যাকেজটি লোড করতে হবেpkg load image
সুইভার

ধন্যবাদ, প্যাকেজটি সঠিকভাবে ইনস্টল করা থাকলে লোড করার দরকার নেই আপনি এটি
অক্টোভ

আমি বিশ্বাস করি এটি কেবলমাত্র pkg load *শুরুতে অক্টোব অনলাইনের কল । আইডোন.কম আরও ভাল পছন্দ হতে পারে
স্যুভার

প্যাকেজটি এইভাবে ইনস্টল করা উচিত pkg install -auto image-1.0.0.tar.gzযাতে এটি স্বয়ংক্রিয়ভাবে লোড হতে পারে দয়া করে ম্যানুয়ালটি দেখুন
rahnema1

ঠিক আছে তাহলে ঠিক আছে। আমি এখানে আগে যা দেখেছি তা বন্ধ করে যাচ্ছিলাম ।
স্যুভার

5

ম্যাটল্যাব, 87 85 বাইট

লুই মেন্ডো ধন্যবাদ 2 বাইট সংরক্ষণ

function a=f(s);i='()*BD\]^'-67;[~,a]=unique([0 cumsum(i(s+1))],'last');a=[a'+64,''];

'%&''?AYZ['-64সুন্দর কৌশল ... আসলে
by

4

পিএইচপি, 93 বাইট

কোডস জনসনের উত্তরের মতো একক অ্যারেতে পরিচালনা করা ।
তবে এটিতে আরও অনেক আইডিয়া রয়েছে যা আমি নিজে পোস্ট করেছি।

for($r=[$c=A];""<$d=$argv[++$i];)$r[$p+=($d+=$d>3)*9-$d%3*8-28]=++$c;ksort($r);echo join($r);

কমান্ড লাইন আর্গুমেন্ট থেকে সংখ্যা নেয়। সাথে চালাও -nr

কার্সার সরানো

প্রাথমিক গণনা:

$d+=$d>3;           // if $d>3, add 1
$p+= ($d/3-1|0)*26  // add/subtract 26 for line change
    +$d%3-1;        // add/substract 1 for column change

golfing:

$d+=$d>3;$p+=($d/3-1|0)*27+$d%3-1;          // +0: multiple of 3 instead of 26
$d+=$d>3;$p+=($d/3|0)*27-27+$d%3-1;         // +1: distribute `line-1`
$d+=$d>3;$p+=($d/3)*27-$d%3/3*27-27+$d%3-1; // +8: distribute `|0`
$d+=$d>3;$p+=$d*9-$d%3*9-27+$d%3-1;         // -8: `/3*27` -> `*9`
$d+=$d>3;$p+=$d*9-$d%3*8-28;                // -7: combine duplicates

অ্যাসাইনমেন্টগুলি মার্জ করে কোনও কিছুই সংরক্ষণ করা যায় না, তবে এক প্রকারের পাঠযোগ্যতার উন্নতি ঘটে:

for(init;input loop;$p=$d...)$d+=$d>3;
for(init;input loop;)$p=($d+=$d>3)...;

ভাঙ্গন

for($r=[$c=A];                  // init result, init letter
    ""<$d=$argv[++$i];)         // loop through command line arguments
    $r[
        $p+=($d+=$d>3)*9-$d%3*8-28  // move cursor
    ]=++$c;                         // increment letter, plot
ksort($r);                      // sort result by index
echo join($r);                  // print result

3

পাইথন 2, 180 178 176 বাইট

def f(d,a=[[""]*26 for _ in[1]*26],x=0,y=0,j=66):
 a[0][0]="A"
 for i in d:y+=(i>4)-(i<3);x+=(`i`in'247')-(`i`in'035');a[y][x]=chr(j);j+=1
 return"".join("".join(i)for i in a)

2

পিএইচপি, 121 বাইট

$r[0]=chr(65);for(;($n=$argv[1][$i])!=null;)$r[$c+=[-27,-26,-25,-1,1,25,26,27][$n]]=chr($i+++66);ksort($r);echo join($r);

এটি -rপতাকা সহ কমান্ড লাইনে চলে এবং যুক্তি হিসাবে সূচকগুলির একটি চর অ্যারে (স্ট্রিং) নেয়।


আপনি তার ""<$n=$argv[1][$i]পরিবর্তে 5 টি সহজ বাইট সংরক্ষণ করতে পারেন($n=$argv[1][$i])!=null
তিতাস

1

আর, 160 বাইট

a=scan()
e=f=26
x=matrix(0,51,51)
x[e,f]="A"
for(i in a){g=function(q)grepl(q,i)
T=T+1
f=f-g("N")+g("S")
e=e-g("W")+g("E")
x[e,f]=LETTERS[T]}
cat(x[x>0],sep="")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.