কথায় কথায় চলুন!


33

এটি আমার নম্র মতামত যে স্ট্যান্ডার্ড পাঠ্য বিরক্তিকর। অতএব আমি একটি নতুন লেখার মান প্রস্তাব করছি, হাঁটা শব্দ!

হাঁটা শব্দ

হাঁটা শব্দ এমন শব্দ যা নির্দিষ্ট অক্ষরের প্রতিক্রিয়া জানায়। এই চ্যালেঞ্জের উদ্দেশ্যে ট্রিগার চরিত্রগুলি [u, d, r, l]এসেছে up down right left

পাঠ্য প্রিন্ট করার সময় যখনই আপনি এই জাতীয় কোনও চরিত্রের মুখোমুখি হন, আপনি পাঠ্যের দিকটি সরিয়ে নিয়ে যাবেন।
উদাহরণস্বরূপ, পাঠ্যের abcdefফলাফল হবে:

abcd
   e
   f

বিধি

  • বড় হাতের UDRLএবং ছোট উভয় udrlদিকের দিক পরিবর্তন করা উচিত তবে আউটপুট ক্ষেত্রে কেস সংরক্ষণ করা উচিত
  • ইনপুটটিতে কেবল মুদ্রণযোগ্য অক্ষর থাকবে (0-9, A-Z, a-z, !@#%^&*() etc...), কোনও নিউলাইন নেই!
  • যখনই পাঠ্যটি সংঘর্ষ করবে, এটি সেই অবস্থানের পুরানো চরিত্রটিকে ওভাররাইট করবে
  • আউটপুট কোনও ফ্যাশনেবল বিষয়ে ব্যবহারকারীর কাছে উপস্থাপন করা উচিত, তবে এটি একক আউটপুট হওয়া উচিত (লাইনের বিন্যাস নেই)
  • ট্রেলিং এবং শীর্ষস্থানীয় নিউলাইনগুলি অনুমোদিত
  • চলার জায়গাগুলি অনুমোদিত
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য

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

empty input => empty output or a newline

u =>
u

abc =>
abc

abcd =>
abcd

abcde =>
abcd
   e

abcdde =>
abcd
   d
   e

codegolf and programming puzzles =>
   cod
     e
     g
     o
dna fl    sel
            z
p           z
rogramming pu

ABCDELFUGHI =>
 I
AHCD
 G E
 UFL

It is in my humble opinion that standard text is boring. Therefore I propose a new writing standard, walking words! =>
dnats taht noinipo el
a                   b
rd                  m
       It is in my hu
 t
 e
 x
 t

 i
 s

 b
 o
 ring. Therefore I propose a new writing stand
                                             a
                                             rd
                                              ,

                                              w
                                              a
                                      rdw gnikl
                                       s
                                       !

এটি , বাইট জেতে সংক্ষিপ্ততম কোড!


4
এই ফর্ম্যাটে একটি গুরুতর ডেটা হারাতে সমস্যা রয়েছে ...: পি
মুকুল কুমার

শীর্ষস্থানীয় / পিছনের স্থানগুলি কি অনুমোদিত?
আর্নল্ড

@ আর্নল্ড যতক্ষণ না তারা চরিত্রগুলির অবস্থানের ব্যাঘাত ঘটাবেন না। সুতরাং সম্ভবত সম্ভবত
স্পেসিংয়ের

1
শব্দের আউটপুটটি কীভাবে golfনিজের দ্বারা দেখাবে?
gabe3886

উত্তর:


4

কাঠকয়লা , 29 27 20 19 বাইট

FS«F№rdlu↧ι≔ιω✳∨ωrι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

FS«

ইনপুট অক্ষরের উপর লুপ করুন।

F№rdlu↧ι

যদি বর্তমান চিঠিটি একটি দিক হয় ...

≔ιω

তারপরে বর্তমান চলার দিকটি আপডেট করুন।

✳∨ωrι

অক্ষরটি বর্তমান চলার দিকের দিকে মুদ্রণ করুন, কোনও দিকনির্দেশ এখনও সেট না করা থাকলে ডানদিকে ডিফল্ট করুন।


1
@ ওয়েসকাঃ দি থাকার কথা ছিল । এর জন্যে দুঃখিত.
নীল

7

ডায়ালগ এপিএল , 63 বাইট

s@(n+11 9∘○¨+\0j1*⊃¨,⍨\(8∘≠⍴¨⊢)0,'rdluRDLU'⍳¯1↓s)⍴∘'',⍨2×n←≢s←⍞

⎕IO←0v16 ( @) থেকে ব্যবহার এবং বৈশিষ্ট্যগুলি

n←≢s←⍞কাঁচা ইনপুট sএবং তার দৈর্ঘ্যn

⍴∘'',⍨2×n স্পেসগুলির 2n বাই ম্যাট্রিক্স তৈরি করুন

s@(...)sনির্দিষ্ট (জোড়া) সূচকের অক্ষরের সাথে ম্যাট্রিক্স সংশোধন করুন

সূচকগুলি কীভাবে গণনা করা হয়:

¯1↓s এর শেষ চরটি ফেলে দিন s

'rdluRDLU'⍳''r'0 হিসাবে এনকোড , 'd'1 হিসাবে, ইত্যাদি; অন্যান্য চর 8 হিসাবে

0, একটি 0 প্রিপেন্ড করুন

(8∘≠⍴¨⊢) প্রতি 8 টি একটি খালি তালিকায় পরিবর্তন করুন, অন্য সমস্ত 1 টি উপাদান তালিকায় পরিণত করুন

,⍨\ক্রমবর্ধমান অদলবদল করা ( abcd-> a ba cba dcba)

⊃¨ প্রতিটি থেকে প্রথম

0j1* কাল্পনিক ধ্রুব আমি

+\ ক্রমসংখ্যা

11 9∘○¨প্রতিটি থেকে বাস্তব এবং কাল্পনিক অংশ; পরিসীমা মধ্যে স্থানাঙ্ক পেতে -n...n

n+ তাদের বড় ম্যাট্রিক্সে কেন্দ্র করুন


3

পাইথ, 68 65 বাইট

KUJ,00ImXH~+VJ=@as_BM_MBU2Kx"rdlu"rd0dzjcsm.x@Hd;*Fm=Z}hdedSMCHlZ

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

এটি একটি অভিধান ব্যবহার করে, যা একটি যুগ্ম স্থানাঙ্ক দ্বারা সূচিযুক্ত হয়, যা ইনপুট রিড হিসাবে আপডেট করা হয়, তারপরে শেষে মুদ্রিত হয়। এটি এক টন চতুর গল্ফিং কৌশল ব্যবহার করে।

-mদম্পতির পতাকা ব্যবহার করে দৌড়ানোর আগে সাদা স্থান এবং মন্তব্যগুলি ছাঁটাই করতে আমি এখানে এটি কীভাবে লিখেছি :

KUJ,00                 ; Initialize J to [0, 0] and K to [0, 1].
                       ; J is the current location, K is the current direction.
I                      ; If the following is truthy, which will be when the input
                       ; is nonempty,
  m                    ; Map d over z, the input.
  XH                   ; Assign to H (a hash table, initially empty)
    ~+VJ               ; At location J, then update J by adding elementwise
      =@               ; K (Next variable is implicit), which is set to
        as_BM_MBU2K    ; [0, 1], bifurcated on mapped negation, then mapped on
                       ; reversal bifuraction with the old value of K appended.
                       ; e.g. [[0, 1], [1, 0], [0, -1], [-1, 0], K]
        x"rdlu"rd0     ; indexed at location equal to the index of the lowercase
                       ; of the current character into "rdlu", -1 if missing.
    d                  ; Insert the current character with that key.
  z                    ; map over z.
jc                     ; Join on newlines the result of chopping into a rectangle
  sm                   ; the concatenation of the map
    .x@Hd;             ; Lookup the character at the given location,
                       ; if none then ' '
    *Fm                ; Locations are the cartesian product of the map
      =Z}hded          ; Inclusive range from the head of each list to 
                       ; the end of each list
                       ; Saved in Z for later
      SMCH             ; Transpose the list of keys, and sort the x and y values
                       ; separately.
  lZ                   ; Width of the rectangle should equal the number of
                       ; x values, which is the length of the last entry.

3

সি #, 525 474 বাইট

সম্পাদনা: সংরক্ষিত 51 বাইট @ সটেনবার্গের জন্য ধন্যবাদ

এটি সুন্দর নয়, তবে এটি কাজ করে ...

Golfed:

string W(string s){var l=s.Length;var a=new char[2*l+1,2*l+1];int x=2*l/2;int y=2*l/2;int d=0;for(int i=0;i<l;i++){switch(char.ToUpper(s[i])){case'U':d=3;break;case'D':d=1;break;case'L':d=2;break;case'R':d=0;break;}a[y,x]=s[i];switch(d){case 0:x+=1;break;case 1:y+=1;break;case 2:x-=1;break;case 3:y-=1;break;}}string o="";for(int i=0;i<2*l+1;i++){string t="";for(int j=0;j<2*l+1;j++)t+=a[i,j]+"";o+=t==string.Join("",Enumerable.Repeat('\0',2*l+1))?"":(t+"\r\n");}return o;}

Ungolfed:

public string W(string s)
{
  var l = s.Length;
  var a = new char[2 * l + 1, 2 * l + 1];
  int x = 2 * l / 2;
  int y = 2 * l / 2;
  int d = 0;
  for (int i = 0; i < l; i++)
  {
    switch (char.ToUpper(s[i]))
    {
      case 'U':
        d = 3;
        break;
      case 'D':
        d = 1;
        break;
      case 'L':
        d = 2;
        break;
      case 'R':
        d = 0;
        break;
    }
    a[y, x] = s[i];
    switch (d)
    {
      case 0:
        x += 1;
        break;
      case 1:
        y += 1;
        break;
      case 2:
        x -= 1;
        break;
      case 3:
        y -= 1;
        break;
    }
  }
  string o = "";
  for (int i = 0; i < 2 * l + 1; i++)
  {
    string t = "";
    for (int j = 0; j < 2 * l + 1; j++)
      t += a[i, j] + "";
    o += t == string.Join("", Enumerable.Repeat('\0', 2 * l + 1)) ? "" : (t + "\r\n");
  }
  return o;
}

ব্যাখ্যা:

dসংশোধনের দিকে অ্যারের অবস্থান বৃদ্ধি করতে একটি দ্বি-মাত্রিক অ্যারে এবং মান ব্যবহার করে, যেখানে d মানগুলি:

0 => RIGHT
1 => DOWN
2 => LEFT
3 => UP

টেস্ট:

var walkTheWords = new WalkTheWords();
Console.WriteLine(walkTheWords.W("codegolf and programming puzzles"));

                            cod                              
                              e                              
                              g                              
                              o                              
                         dna fl    sel                       
                                     z                       
                         p           z                       
                         rogramming pu  

আপনি সম্পূর্ণ দ্বিতীয় স্যুইচটি সম্পূর্ণরূপে মুছে ফেলতে পারেন you আপনি যেখানে লিখবেন সেখানে প্রথম সুইচটিতে d=0;দ্বিতীয় বিবরণী বিবৃতিতে বিবৃতি দ্বারা এই বিবৃতিটি প্রতিস্থাপন করুন case 0:এবং অন্যান্য ক্ষেত্রে অনুরূপ করুন এবং আপনার দ্বিতীয় স্যুইচ প্রয়োজন হতে পারে না last এবং শেষ অবধি এই বিবৃতিটি সরিয়ে a[y,x]=s[i]নিয়ে উপরে লিখুন প্রথম সুইচ এর।
মুকুল কুমার

@ মুকুলকুমার ভাল ধারণা, আমি এটি কাজে লাগাতে পারি না। আমি প্রথমে এক সুইচে এটি করার চেষ্টা করেছি। এটি এটির বর্তমান ডুয়াল-স্যুইচ কনফিগারেশনে থাকতে হবে! :)
পিট আর্দেন

আপনি কি a[y,x]=s[i]প্রথম সুইচের আগে লিখেছিলেন ?
মুকুল কুমার

2
আপনি switch(s[i].toLowerCase())(বা সি # সমতুল্য কী ...) ব্যবহার করতে পারেন এবং তারপরে সমস্ত বড় হাতের অক্ষর মুছে ফেলতে পারেন। কিছু বাইট সংরক্ষণ করা উচিত।
স্টেইনবার্গ

1
@ সটেনবার্গ ধন্যবাদ, সেখানে বড় সঞ্চয়! না, আপনি সরাসরি পারবেন না ToUpper()কারণ এটি একটি charনয় string। পছন্দগুলি হয় হয় - s[i].ToString().ToUpper()অথবা char.ToUpper(s[i])আমার মনে হয় যে charএটির চেয়ে কিছুটা ছোট। চিয়ার্স :)
পিট আর্দেন

3

জাভাস্ক্রিপ্ট (ES6), 218 220 232

আমি ব্যবহার করছিলাম uএবং সম্পাদনাt শীর্ষ এবং বামতম অবস্থানের সন্ধান করছিলাম, কিন্তু আমি বুঝতে পেরেছিলাম যে tএকেবারেই প্রয়োজন নেই

w=>[...w].map(c=>u=(((g[y]=g[y]||[])[x]=c,n=parseInt(c,36)|0)-21&&n-27?a=n-13?n-30?a:!(b=-1):!(b=1):(b=0,a=n/3-8),y+=b,x+=a)<u?x:u,a=1,b=0,x=y=u=w.length,g=[])+g.map(r=>[...r.slice(u)].map(c=>z+=c||' ',z+=`
`),z='')&&z

কম গল্ফড

w=>{
  a = 1, b = 0;
  x = y = u = w.length;
  g = [];
  [...w].map(c => (
    r = g[y]||[],
    r[x] = c,
    g[y] = r,
    n = parseInt(c,36)|0,
    n-21 && n-27 ? n-13 && n-30?0 : (a=0, b=n-13?-1:1) : (b=0, a=n/3-8),
    x += a, u = x<u? x : u,
    y += b
  ))
  z=''
  g.map(r=>[...r.slice(u)].map(c=>z += c||' ', z += '\n'))
  return z
}             

পরীক্ষা

F=
w=>[...w].map(c=>u=(((g[y]=g[y]||[])[x]=c,n=parseInt(c,36)|0)-21&&n-27?a=n-13?n-30?a:!(b=-1):!(b=1):(b=0,a=n/3-8),y+=b,x+=a)<u?x:u,a=1,b=0,x=y=u=w.length,g=[])+g.map(r=>[...r.slice(u)].map(c=>z+=c||' ',z+=`
`),z='')&&z

function update() {
  w=I.value
  O.textContent=F(w)
}

update()
#I {width:90%}
<input id=I value='It is in my humble opinion that standard text is boring. Therefore I propose a new writing standard, walking words!' oninput='update()'>
<pre id=O></pre>


3

05 এ বি 1 ই , 27 26 25 23 22 বাইট

গ্রিমে ধন্যবাদ 3 বাইট সংরক্ষণ করা

ā¤‹>Šε’uχ’slkDÈiV}Y}Λ

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

ব্যাখ্যা

ā                        # push [1 ... len(input)]
 ¤‹                      # check each number if its less than the max
   >                     # increment
                         # results in a list as long as the input where each number is 2 
                         # apart from the last one, this is the lengths to draw
    Š                    # move 2 copies of the input to the top of the stack
                         # the first one is the string to draw
     ε              }    # for each char in the second copy
      ’uχ’slk           # get the chars index in "ubridal"
              D          # duplicate
               Èi }      # if the index is even
                 V       # store it in Y
                   Y     # push Y (initially 2)
                         # this gives us the list of directions
                     Λ   # draw everything on the canvas

1
"দাম্পত্য" একটি অভিধান শব্দ। -1 । সম্পাদনা: এটি -2 করুন
গ্রিমি

@ গ্রিমি: আমি ভাবছিলাম যে অভিধানটি এখানে ব্যবহার করা যেতে পারে, তবে এটি সত্যিই স্মার্ট!
এমিগিনা


2

জাভাস্ক্রিপ্ট, 4-6-6 ̶ 455, 433 বাইট

সম্পাদনাগুলি: 11 বাইটস সংরক্ষিত হয়েছে, ব্যবহারকারীকে 1000000000 10 বা তাই সংরক্ষণ করা হয়েছে বলে ধন্যবাদ, ব্যবহারকারীর জন্য ধন্যবাদ 2428118 কিছু অপ্রয়োজনীয় আধা-কলোনও সরিয়েছে।

আমি আরও নিশ্চিত যে এটি আরও গল্ফ করা যেতে পারে, তবে আমি এটি বেশ পরিচালনা করতে পারিনি। আমি এখনও নতুন সম্পূর্ণ জিনিস, তাই কোনও পরামর্শ অনেক প্রশংসা করা হয় :)

z=a=>{b=c=0;j=[[]];d='';a.split``.forEach(g=>{h=g.toLowerCase();if('ruld'.includes(h)){d=h}f=x=>new Array(x[0].length).fill` `;switch(d){case 'l':if(!b){j.forEach(e => e.unshift` `);++b}j[c][b--]=g;break;case 'u':if(!c){j.unshift(f(j));++c}j[c--][b]=g;break;case 'd':if(c == j.length-1){j.push(f(j))}j[c++][b]=g;break;default:if(b==(j[0].length-1)){j.forEach(row=>row.push` `)}j[c][b++] = g;break}});j.forEach(x=>console.log(x.join``))}
<input id="a"> </input>
<input type="submit" onclick="z(document.getElementById('a').value);"/>

Ungolfed:

z=a=>{
b=c=0;
j=[[]];
d='';
a.split``.forEach(g=>{
    h=g.toLowerCase();
    if('ruld'.includes(h)){d=h;}
    f=x=>new Array(x[0].length).fill` `;
    switch(d){
        case 'l':
            if(!b){
                j.forEach(e => e.unshift` `);
                ++b;
            }
            j[c][b--] = g;
            break;
        case 'u':
            if(!c){
                j.unshift(f(j));
                ++c;
            }
            j[c--][b] = g;
            break;
        case 'd':
            if(c == j.length-1){
                j.push(f(j));
            }
            j[c++][b] = g;
            break;
        default:
            if(b == (j[0].length-1)){
                j.forEach(row=>row.push` `);
            }
            j[c][b++] = g;
            break;
    }
});
j.forEach(x => console.log(x.join``));

}

আমি কমবেশি এর পদ্ধতির দিকে নিয়েছি:

  • আউটপুট সংরক্ষণ করার জন্য একটি অ্যারে রাখুন
  • অ্যারেতে পরবর্তী অক্ষরের x এবং y অবস্থান গণনা করুন
  • যদি সমন্বয়গুলি অ্যারের বাইরে থাকত তবে অ্যারেটি সেই দিকে প্রসারিত করুন। হয় এই সারিটির শেষে ধাক্কা দিয়ে এবং অতিরিক্ত স্থান দিয়ে বা সম্পূর্ণভাবে অন্য সারি যুক্ত করে।
  • অ্যারে করুন [y] [x] = বর্তমান অক্ষর
  • ফলাফল অ্যারে মুদ্রণ

সাইটে স্বাগতম! আমি জাভাস্ক্রিপ্টের বিশেষজ্ঞ নই তবে এটি দেখতে বেশ সুন্দর দেখাচ্ছে।
গম উইজার্ড

স্বাগত! আপনি প্রতিস্থাপন 11 বাইট সংরক্ষণ করতে পারবেন ['r','u','l','d']সঙ্গে"ruld"
0 '

এছাড়াও z=আপনার প্রোগ্রামটির শুরুতে আপনার প্রয়োজন হবে না
0 '

ভকভগক! জেএস এটির সুবিধায় কখনও আমাকে বিস্মিত করে না।
ঝাল

আপনি কিছু বাইট, যেমন সংরক্ষণ করতে বিভিন্ন স্থানে টেমপ্লেট লিটারেল ব্যবহার করতে পারেন a.split``
ব্যবহারকারী 2428118

2

পাইথন 3, 314 309 290 268 বাইট

x=y=0
d,m=(1,0),{}
q={'u':(0,-1),'d':(0,1),'l':(-1,0),'r':d}
for c in input():m[x,y]=c;d=q.get(c.lower(),d);x,y=x+d[0],y+d[1]
X,Y=zip(*m)
O,P=min(X),min(Y)
r,p=0,print
exec("t=~~O;exec(\"p(m.get((t,r+P),' '),end='');t+=1;\"*-~abs(max(X)-O));r+=1;p();"*-~abs(max(Y)-P))

আমি কিছু আকর্ষণীয় ফলাফল নিয়ে আমার প্রোগ্রামটিকে ইনপুট হিসাবে চালানোর চেষ্টা করেছি। হাহ, তা ব্যাখ্যা করার চেষ্টা করুন, পাইথন!

শেভ 5 বাইট - জ্যাক বেটস এর প্রশংসা।

23 বাইট কুন্ডার দ্বারা দূরে হুইস

দ্রষ্টব্য: আমি মনে করি বিভিন্ন সম্পাদক ব্যবহার করার কারণে আমার বাইটগুলির সাথে পরিমাপের কিছু ত্রুটি হয়েছিল। তবে, আমি মোটামুটি নিশ্চিত যে সর্বশেষতমটি সঠিক।


স্থানটি স্থান পরিবর্তন 'r':(1,0)করে 'r':dএবং এর মাধ্যমে আপনি 5 বাইট সরিয়ে ফেলতে পারেন w[a] for। এছাড়াও এটি উন্মাদ !!! এটি আপনাকে কতক্ষণ সময় নিয়েছে?

কাজের জন্য একটি দিন, জ্যাকবেটস আমি একটু অবসেসিভ হই
লর্ড রেট 25'17

আমরা সবাই না? পুরো কোডিং এর পয়েন্ট!

আমি বিশ্বাস করি আপনি সেই পুরো X,Y=map(...)লাইনটি প্রতিস্থাপন করতে পারেন X,Y=zip(*m)। এখানে কাজ করে। ( *mএটি এর কীগুলির তালিকায় আনপ্যাক করে, এবং জিপটি তাদের দুটি টিপলগুলিতে পুনরায় ভাগ করে দেয়))
নিক মাত্তিও

চারটি বাইট সংরক্ষণ করতে আপনি এক লাইনে লুপটিও রাখতে পারেন।
নিক মাতেও

2

পিএইচপি, 238 223 205 204 বাইট

জার্গ ( striposপরিবর্তে preg_match) দ্বারা 12 টি বাইট সংরক্ষণ করা হয়েছে , নিউলাইনটি অনুমান করার পরিবর্তে নেতৃত্ব দিয়ে 1 বাইট + ধনুর্বন্ধনী, 16 + ব্রেসগুলি দিক পরিবর্তন থেকে গল্ফ করেছে, আরও 1 টি এর পরিবর্তে টার্নারি সহ if

for($m=$d=1;$o=ord($c=$argn[$i++]);$m=min($m,$x),$n=max($n,$x))stripos(_ulrd,$r[$y+=$e][$x+=$d]=$c)?$d=($e=[1,-1][$o&11])?0:$o%4-1:0;ksort($r);foreach($r as$s)for($i=$m-print"\n";$i++<$n;)echo$s[$i]??" ";

পাইপ হিসাবে চালনা করুনphp -nR '<code>' বা এটি অনলাইনে চেষ্টা করুন

ভাঙ্গন

for($m=$d=1;                    # init max index and x-offset to 1
    $o=ord($c=$argn[$i++]);     # loop through characters
    $m=min($m,$x),$n=max($n,$x))    # 3. adjust min and max x offset
    stripos(_ulrd,
        $r[$y+=$e][$x+=$d]=$c       # 1. move cursor; add character to grid
    )?                              # 2. if direction change
        $d=(
            $e=[1,-1][$o&11]            # set y direction
        )
        ?0:$o%4-1                       # set x direction
    :0;

ksort($r);              # sort rows by index
foreach($r as$s)        # loop through rows
    for($i=$m-print"\n";    # print newline, reset $i
        $i++<$n;)           # loop $i from min index to max index
        echo$s[$i]??" ";        # print character, space if empty

1
আমি যদি এই অধিকারটি দেখতে পাই তবে strspn($r[$y+=$e][$x+=$d]=$c,udlruDLR)রেগেক্স ব্যবহারের পরিবর্তে কিছু বাইট সংরক্ষণ করা উচিত, স্ট্রিপোস (_উল্ড, $ আর [$ y + = $ ই] [$ x + = $ d] = $ সি) `আরও ভাল $argn3 টি বাইট সংরক্ষণের চেয়ে আরও ভাল
জার্গ হালসারম্যান 9:58

@ জার্গহালসারম্যান আপনি কি আমাকে ছুরিকাঘাত করছেন? : ডি আপনি ঠিক বলেছেন।
তিতাস

আজ কেউ তার পোস্ট সম্পাদনা করেনি এবং আমি আপনার উত্তর দেখেছি এবং দেখেছি আপনি এটিকে আরও খাটো করতে পারেন। দুঃখিত যে উন্নতি এত বড় নয় যে আপনি জেএস উত্তরটি পরাজিত করতে পারেন। আপনার উত্তরগুলিতে আমি যদি কিছু বাইট পেতে পারি তবে এটি খুশী ও গর্বিত হয়েছে তবে আমি এই মামলাগুলি অনুসন্ধান করছি না
জার্গ হালসারম্যান

@ জার্গএলসারম্যান দুশ্চিন্তা করবেন না; আপনার 12 টির সাথে আমি আরও 21 টি বাইট পেয়েছি।
টাইটাস

10 শতাংশেরও বেশি এটি দুর্দান্ত
জার্গ হালসারম্যান

2

জাভা 10, 288 286 280 263 বাইট

s->{int l=s.length(),x=l,y=l,d=82,A=x,B=y;var r=new char[l+=l][l];for(var c:s.toCharArray()){A=x<A?x:A;B=y<B?y:B;r[x][y]=c;c&=~32;d="DLRU".contains(""+c)?c:d;x+=5-d/14;y+=3-(d^16)/23;}s="";for(x=A;x<l;x++,s+="\n")for(y=B;y<l;y++)s+=r[x][y]<1?32:r[x][y];return s;}

-17 বাইট ধন্যবাদ @ গ্রিমিকে

ব্যাখ্যা:

এখানে চেষ্টা করুন। (উল্লেখ্য: আমি আউটপুট একটি বিট আরো কম্প্যাক্ট করতে সব trailing স্পেস / নতুন লাইন অপসারণ অপসারণ করুন মুক্ত মনে। .replaceAll("(m?)\\s+$","")test-method প্রকৃত ফলাফল দেখতে।)

s->{                              // Method with String as both parameter and return-type
  int l=s.length(),               //  Length of input String
      x=l,y=l,                    //  x,y coordinates, starting at `l`,`l`
      d=82,                       //  Direction, starting towards the right
      A=x,B=y;                    //  Min x & y values to remove leading spaces at the end
  var r=new char[l+=l][l];        //  character-matrix, with size `l`+`l` by `l`+`l`
  for(var c:s.toCharArray()){     //  Loop over the characters of the input String:
    A=x<A?x:A;                    //   Adjust minimum x `A` if necessary
    B=y<B?y:B;                    //   Adjust minimum y `B` if necessary
    r[x][y]=c;                    //   Fill x,y with the current character
    c&=~32;                       //   Make character uppercase if it isn't yet
    d="DLRU".contains(""+c)?c:d;  //   Change the direction if necessary
    x+=5-d/14;                    //   Set the next x coordinate based on the direction
    y+=3-(d^16)/23;}              //   Set the next y coordinate based on the direction
  s="";                           //  After the loop: create an empty result-String
  for(x=A;x<l;x++,                //  Loop `x` in the range [`A`, `l`):
      s+="\n")                    //    And append a new-line after every iteration
    for(y=B;y<l;y++)              //   Inner loop `y` in the range [`B`, `l`):
      s+=r[x][y]<1?               //    If the cell at x,y is empty:
          32                      //     Append a space to the result-String
         :r[x][y];                //    Else: append the character to the result-String
  return s;}                      //  After the nested loop: teturn result-String

1
d<69?1:d>84?-1:0হতে পারে5-d/14
গ্রিমি

1
এবং একই শিরাতে, d==82?1:d==76?-1:0হতে পারে3-(d^16)/23
গ্রিমি

@ গ্রিমি ধন্যবাদ আমি জানতাম যে এই দুটি অংশটি কোনওভাবেই গল্ফ হতে পারে তবে আমি সেই বিটওয়াইস / গাণিতিক ট্রান্সফর্মেশনগুলিতে খুব খারাপ, তাই আমি চেষ্টা করে বিরক্ত করিনি। -17 বাইট জন্য ধন্যবাদ! :)
কেভিন ক্রুইজসেন

1

পার্ল, 204 + 3 = 207 বাইট

জন্য +3 -F

হোয়াইটস্পেস কোডের অংশ নয় এবং স্বচ্ছতার জন্য সরবরাহ করা হয়।

%p=(d,1,l,2,u,3,r,$x=$y=0);
for(@F){
    $m{"$x,$y"}=$_;
    $g=$p{lc$_}if/[dlur]/i;
    $g%2?($y+=2-$g):($x+=1-$g);
    ($a>$x?$a:$b<$x?$b:$x)=$x;
    ($c>$y?$c:$d<$y?$d:$y)=$y
}
for$k($c..$d){
    print($m{"$_,$k"}||$")for$a..$b;
    say""
}

ফিজ বাজ চ্যালেঞ্জের আমার সমাধানের অনুরূপ, আমি এক্স সহ একটি হ্যাশ তৈরি করি, প্রতিটি ধাপের জন্য এক্স, ওয়াই স্থানাঙ্কিত রাখে, সর্বাধিক এবং সর্বনিম্ন x- এবং y- স্থানাঙ্কগুলি সঞ্চিত রাখি, তারপরে লুপ করে সমস্ত কিছু মুদ্রণ করি।

যদি আমি মরিয়া হয়ে থাকি তবে আমি প্রথম forলুপের শেষ তিনটি লাইনকে একক জঘন্য বিবৃতিতে পরিণত করতে সক্ষম হতে পারি যা একটি বা দুটি বাঁচাতে পারে, তবে আমি সম্পূর্ণ অপঠনযোগ্য ফলাফলের অপেক্ষায় নেই।


1

এক্সেল ভিবিএ, 205 বাইট

Sub t(a)
Z=1:x=70:y=x:For i=1 To Len(a)
s=Mid(a,i,1):Cells(y,x).Value=s:Select Case LCase(s)
Case "l":Z=-1:w=0
Case "d":Z=0:w=1
Case "r":Z=1:w=0
Case "u":Z=0:w=-1
End Select:x=x+Z:y=y+w:Next:End Sub

আমি এক্সেল এর বিদ্যমান উত্তরগুলির সাথে প্রতিযোগিতা করার দক্ষতায় আশ্চর্য হয়েছি। এটি কাজ করে কারণ wএবং zদিকটি ট্র্যাক করে।


শুরুর অবস্থান 70 যথেষ্ট হতে পারে না। তদুপরি, শীর্ষস্থানীয় স্থানগুলির অনুমতি নেই
edc65

1

স্মাইলব্যাসিক, 148 146 বাইট

DEF W M,S,T
WHILE""<M
A=INSTR(@DLURdlur,M[0])*PI()/2IF A>0THEN S=COS(A)T=SIN(A)
X=CSRX+S
Y=CSRY+T?SHIFT(M);
SCROLL-!X,-!Y
LOCATE!X+X,Y+!Y
WEND
END

এর সাথে ফাংশনটি কল করুন W "text",vx,vy, যেখানে vx এবং vy শুরুতে দিক নির্দেশক (ডিফল্টটি 1,0)


X বা Y 0 এর কম হলে কী হয়?
edc65

কার্সার অফস্ক্রিন হয়ে গেলে এটি সমস্ত পাঠ্য স্ক্রোল করবে।
12 মে 21

0

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

func w(a:String){var t=a.characters,d=t.count,c=Array(repeating:Array(repeating:" ",count:d*2),count:d*2),i=d,j=d,l=["d":(1,0),"u":(-1,0),"l":(0,-1),"r":(0,1)],e=(0,1)
t.map{c[i][j]="\($0)"
e=l["\($0)".lowercased()] ?? e
i+=e.0
j+=e.1}
c.map{$0.map{print($0,terminator:"")};print()}}

Ungolfed

func w(a:String){
    var t=a.characters,d=t.count,c=Array(repeating:Array(repeating:" ",count:d*2),count:d*2),i=d,j=d,l=["d":(1,0),"u":(-1,0),"l":(0,-1),"r":(0,1)],e=(0,1)
    t.map{
        c[i][j]="\($0)"
        e=l["\($0)".lowercased()] ?? e
        i+=e.0
        j+=e.1
    }
    c.map{
        $0.map{
            print($0,terminator:"")
        };
        print()
    }
}

সতর্কতা

দীর্ঘতর ইনপুটটির জন্য বড় স্ক্রিন লাগবে। আউটপুটটির "খালি" সারি / কলামগুলির কোনও চিকিত্সা নেই কারণ আমি বুঝতে পেরেছি যে চ্যালেঞ্জের বিধি দ্বারা গ্রহণযোগ্য।

অর্থহীন বাক্য

  • নিউলাইন এর জন্য ডিফল্ট টার্মিনেটর হচ্ছে print sux
  • জ্ঞাত দৈর্ঘ্যের অ্যারে তৈরির কোনও সহজ উপায় স্কোরটি নষ্ট করে নি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.