একটি বর্ণমালা গ্রিডে একটি শব্দ ফিট করুন


55

আমি আজ আগে দেখেছি একটি মেম দ্বারা অনুপ্রাণিত ।

চ্যালেঞ্জের বিবরণ

অসীম বর্ণমালা গ্রিড বিবেচনা করুন:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
...

একটি শব্দ নিন ( CODEGOLFএই উদাহরণে) এবং এটিকে গ্রিডের একটি অনুচ্ছেদে তৈরি করুন, একটি স্থান দ্বারা অব্যবহৃত অক্ষরগুলি প্রতিস্থাপন করুন এবং সম্পূর্ণরূপে অসীম গ্রিডের শেষে অক্ষর অপসারণ করুন:

  C           O           
   DE G       O           
           L              
     F

উদাহরণ

STACKEXCHANGE

                  ST      
A C       K               
    E                  X  
  C    H                  
A            N            
      G                   
    E

ZYXWVUTSRQPONMLKJIHGFEDCBA

                         Z
                        Y 
                       X  
                      W   
                     V    
                    U     
                   T      
                  S       
                 R        
                Q         
               P          
              O           
             N            
            M             
           L              
          K               
         J                
        I                 
       H                  
      G                   
     F                    
    E                     
   D                      
  C                       
 B                        
A

F

     F

ANTIDISESTABLISHMENTARIANISM

A            N     T      
        I                 
   D    I         S       
    E             ST      
AB         L              
        I         S       
       H    M             
    E        N     T      
A                R        
        I                 
A            N            
        I         S       
            M

নোট

  • ট্রেলিং হোয়াইটস্পেসগুলি অনুমোদিত।
  • ফাঁকা স্থানের সাথে আপনার শেষের কোনও লাইন প্যাড করার দরকার নেই । উদাহরণস্বরূপ, যদি ইনপুট হয় তবে ABCআপনি ABC23 টি পিছনের স্থান ছাড়াই আউটপুট দিতে পারেন ।
  • আপনি ধরে নিতে পারেন ইনপুটটি [A-Z]+রিজেক্সের সাথে মিলবে ।
  • বিকল্পভাবে, আপনি নিম্ন-বর্ণের বর্ণমালা ব্যবহার করতে পারেন, যার ক্ষেত্রে আউটপুট মিলবে [a-z]+
  • আপনি একটি newline (ব্যবহার করা আবশ্যক \n, \r\nলাইন আলাদা করা বা সমমানের), যে স্ট্রিং একটি তালিকা করা হয় না একটি সঠিক আউটপুট ফরম্যাট।
  • এটি একটি চ্যালেঞ্জ, সুতরাং আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত করুন!

শীর্ষস্থানীয় নিউলাইনগুলি অনুমোদিত?
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার অবশ্যই, যতক্ষণ না এটি গ্রিড কাঠামো গোলমাল করে না।
shooqie

যদি কোনও অ-মারাত্মক ত্রুটি প্রোগ্রামটি বন্ধ করে দেয় তবে এটি ঠিক হবে?
জাকারি 21

@ জ্যাচারý যদিও আমি দেখতে পাচ্ছি যে এটি কিছু বাইট কীভাবে সংরক্ষণ করতে পারে তবে আমি মনে করি এটি কুরুচিপূর্ণ এবং অনাকাঙ্ক্ষিত, অতিশয় আউটপুট উত্পাদন করে। সুতরাং না। সম্পাদনা করুন: আপনি যদি না কোনও প্রস্থান কোড বা এমন কোনও কিছু যা ব্যতিক্রম স্ট্যাক ট্রেস বা স্টার্ডারের অনুরূপ কিছু মুদ্রণ না করে নিজের প্রোগ্রামকে অ-মারাত্মকভাবে প্রস্থান করতে না পারেন তবে।
shooqie

7
প্রস্তাবিত পরীক্ষার কেস: BALLOON(দুটি সংলগ্ন অক্ষর যা একই)
কেভিন ক্রুইজসেন

উত্তর:


10

হুশ , 15 বাইট

TṪS`?' €…"AZ"ġ>

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

ব্যাখ্যা

TṪS`?' €…"AZ"ġ>  Implicit input, e.g. "HELLO"
             ġ>  Split into strictly increasing substrings: x = ["H","EL","LO"]
        …"AZ"    The uppercase alphabet (technically, the string "AZ" rangified).
 Ṫ               Outer product of the alphabet and x
  S`?' €         using this function:
                   Arguments: character, say c = 'L', and string, say s = "EL".
       €           1-based index of c in s, or 0 if not found: 2
  S`?'             If this is truthy, then c, else a space: 'L'
                 This gives, for each letter c of the alphabet,
                 a string of the same length as x,
                 containing c for those substrings that contain c,
                 and a space for others.
T                Transpose, implicitly print separated by newlines.

7

জাভা 10, 161 159 152 বাইট

s->{var x="";int p=0;for(var c:s)x+=p<(p=c)?c:";"+c;for(var y:x.split(";"))System.out.println("ABCDEFGHIJKLMNOPQRSTUVWXYZ".replaceAll("[^"+y+"]"," "));}

-2 ধন্যবাদ বাইট @Nevay
-7 স্ট্রিং ফিরে আসার পরিবর্তে এবং বদ্ধ মুদ্রণ জাভা 10 এ রূপান্তরিত।

ব্যাখ্যা: "

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

s->{                      // Method with String parameter and no return-type
  var x="";               //  Temp-String
  int p=0;                //  Previous character (as integer), starting at 0
  for(var c:s)            //  Loop (1) over the characters of the input
    x+=p<(p=c)?           //   If the current character is later in the alphabet
                          //   (replace previous `p` with current `c` afterwards)
        c                 //    Append the current character to Temp-String `x`
       :                  //   Else:
        ";"+c;            //    Append a delimiter ";" + this character to Temp-String `x`
  for(var y:x.split(";")) //  Loop (2) over the String-parts
    System.out.println(   //   Print, with trailing new-line:
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                          //    Take the alphabet,
        .replaceAll("[^"+y+"]"," "));}
                          //    and replace all letters not in the String-part with a space

পদ্ধতির প্রথম অংশটি ইনপুট-শব্দকে একটি ডিলিমিটারের সাথে ভাগ করে দেয়।
উদাহরণস্বরূপ: CODEGOLFCO;DEGO;L;Fবা BALLOONB;AL;LO;O;N

দ্বিতীয় অংশটি এই অংশগুলির উপরে লুপ করে এবং [^...]কোনও জায়গার সাথে মিলে না যায় এমন সবকিছুর প্রতিস্থাপন করতে রেগেক্স ব্যবহার করে ।
উদাহরণস্বরূপ .replaceAll("[^CO]"," ")ছেড়ে C, এবং O, এবং একটি স্পেস দিয়ে অন্য সব কিছুর পরিবর্ত।


1
এটা হবে না B;AL;LO;O;N?
নিডজেজেকোব

1
-2 বাইট: for(char c:s)x+=p<(p=c)?c:";"+c;
নেভায়ে


4

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

40 বাইট কোড + 4 এর জন্য -lF

print map/$F[0]/?shift@F:$",A..Z while@F

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


আপনার পোস্ট করা লিঙ্কটি 46 বাইট সংস্করণের জন্য।

@ দ্য পাইরেটবে ধন্যবাদ !! আমি জানতাম আমি কিছু আপডেট হয়নি!
ডোম হেস্টিংস


4

জাভাস্ক্রিপ্ট (ES6), 79

শীর্ষস্থানীয় নিউলাইনটি গৃহীত হওয়ায় আমি 2 বাইট সংরক্ষণ করতে পারি Edit

s=>eval("for(o='',v=i=0;c=s.charCodeAt(i);v%=27)o+=v++?c-63-v?' ':s[i++]:`\n`")

আরও 1 বাইটের জন্য, আমি ছোট হাতের বা বড় হাতের ইনপুট গ্রহণ করতে পারি:

s=>eval("for(o='',v=i=0;c=s[i];v%=27)o+=v++?parseInt(c,36)-8-v?' ':s[i++]:`\n`")

কম গল্ফড

s=>{
  var i,o,c,v
  for(o = '', v = 1, i = 0; c = s.charCodeAt(i); v %= 27)
    o += v++ ? c-63-v ? ' ' : s[i++] : '\n'
  return o
}  

পরীক্ষা

f=s=>eval("for(o='',v=i=0;c=s.charCodeAt(i);v%=27)o+=v++?c-63-v?' ':s[i++]:`\n`")

function update() {
  var i=I.value
  i=i.replace(/[^A-Z]/gi,'').toUpperCase()
  O.textContent=f(i)
}

update()
<input id=I value='BALLOON' oninput='update()' >
<pre id=O></pre>


আপনি \nব্যাকটিক্সের ভিতরে -1 বাইটের জন্য একটি আক্ষরিক নিউলাইন দিয়ে প্রতিস্থাপন করতে পারেন ।
জাস্টিন মেরিনার

@ জাস্টিনমারিনার না আমি পারছি না, ডাবল
উক্তিটির

ওহ ঠিক আছে, এটি একটি লজ্জা। আমার খারাপ।
জাস্টিন মেরিনার

4

এমএটিএল , 24 23 বাইট

''jt8+t1)wdh26X\Ys(26e!

ছোট হাতের অক্ষর ব্যবহার করে।

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

ব্যাখ্যা

''     % Push empty string
jt     % Push input string. Duplicate
8+     % Add 8 to each char (ASCII code). This transforms 'a' 105,
       % 'b' into 106, which modulo 26 correspond to 1, 2 etc
t1)    % Duplicate. Get first entry
wd     % Swap. COnsecutive differences.
h      % Concatenate horizontally
26X\   % 1-based modulo 26. This gives a result from 1 to 26
Ys     % Cumulative sum
(      % Write values (converted into chars) at specified positions
       % of the initially empty string
26e    % Reshape into a 26-row char matrix, padding with char 0
!      % Transpose. Implicitly display. Char 0 is shown as space

4

জাপট , 18 16 বাইট

-২ বাইট @ শ্যাগি ধন্যবাদ

;ò¨ £B®kX ?S:Z
·

কেবল বড় হাতের ইনপুট।

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

ব্যাখ্যা

;

বিকল্প ভেরিয়েবলগুলিতে স্যুইচ করুন, যেখানে Bবড় হাতের বর্ণমালা রয়েছে।

ò¨

অক্ষরগুলির মধ্যে ইনপুট স্ট্রিংটি বিভক্ত করুন যেখানে প্রথমটি ¨দ্বিতীয় ( ) এর চেয়ে বড় বা সমান ।

£

প্রতিটি পার্টিশনটি ফাংশন অনুসারে মানচিত্র করুন, Xবর্তমান পার্টিশনটি কোথায় ।

বড় অক্ষরের প্রতিটি বর্ণকে Zবর্তমান বর্ণ হিসাবে ম্যাপ করুন ।

kX

বর্তমান অক্ষর থেকে বর্তমান পার্টিশনের সমস্ত অক্ষর সরান। বর্তমান বিভাজনে যদি বর্তমান চিঠিটি থাকে তবে এটি খালি স্ট্রিংয়ের ফলস্বরূপ।

?S:Z

যদি এটি সত্যবাদী হয় (খালি স্ট্রিং নয়), একটি স্থান ( S) ফিরিয়ে দিন, অন্যথায় বর্তমান চিঠিটি ফিরিয়ে দিন।

·

নতুন লাইনের সাথে আগের লাইনের ফলাফলটিতে যোগদান করুন এবং ফলাফলটি মুদ্রণ করুন।


10 বাইটের জন্য r"[^{Z}]"Sকিছুটা হাস্যকর বলে মনে হচ্ছে তবে আমি এর থেকে ভাল আর কোনও উপায় খুঁজে পাচ্ছি না ...
ETH প্রোডাকশনস



@Shaggy গুড সঙ্গে চিন্তা kX!
জাস্টিন মেরিনার

আসলে আমার মনে হয় আপনি পরিবর্তন করতে পারেন kX ?S:Zথেকে oX ªSদুই বাইট সংরক্ষণ করতে
ETHproductions


3

জেলি , 19 বাইট

<2\¬0;œṗfȯ⁶$¥€@€ØAY

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


OI<1®;-> >2\0;একটি বাইট সংরক্ষণ করতে (আমি আসলে >2\0;œṗµØAf€ȯ€⁶µ€Y18 টির জন্যও করেছি, যা আমি ব্যক্তিগতভাবে পার্স করা সহজ বলে মনে করি)
জোনাথন অ্যালান

@ জোনাথান অ্যালান আমার মনে হয় এটি BALLOONবা কোনও কিছুর জন্য ব্যর্থ হবে ।
এরিক আউটগল্ফার

আপনি সঠিক, হ্যাঁ - সুতরাং এটির মতো অন্য কোনও বাইটের প্রয়োজন হবে <2\1;¬; আচ্ছা ভালো.
জোনাথন অ্যালান

@ জোনাথন অ্যালান যাই হোক, আমি আমার উত্তরটিতে আপনার ধারণাটি প্রয়োগ করব ... সম্পন্ন হয়েছে।
এরিক আউটগলফার

3

সি (জিসিসি), 91 63 বাইট

-২৮ কেবলমাত্র ASCII- কে ধন্যবাদ

_;f(char*s){for(_=64;*s;)putchar(++_>90?_=64,10:*s^_?32:*s++);}

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


আগে:

i,j;f(char*s){while(s[i]){for(j=65;j<91;j++)s[i]==j?putchar(s[i++]):printf(" ");puts("");}}

হ্যাঁ, এর একটি সংক্ষিপ্ত সমাধান আছে, তবে আমি এটি একটি লেখার পরে লক্ষ্য করেছি ... অনলাইনে চেষ্টা করে দেখুন!


82 বাইট , 80 যদি শীর্ষস্থানীয় নতুন লাইনের অনুমতি দেওয়া হয়
ASCII- কেবল



3

গণিত, 101 বাইট

StringRiffle[
  Alphabet[]/.#->" "&/@
   (Except[#|##,_String]&@@@
     Split[Characters@#,#==1&@*Order]),"
",""]&

Splitসংলগ্ন অক্ষরের সাথে তুলনা করে, কঠোরভাবে বর্ণের ক্রম বাড়ানোর ইনপুট Order। যদি Order[x,y] == 1, তবে বর্ণমালার xপূর্বে yএবং এইভাবে একই লাইনে উপস্থিত হতে পারে।

অক্ষরের প্রতিটি অনুক্রমের Exceptজন্য, সেই বর্ণগুলির জন্য স্ট্রিংগুলির সাথে মেলে একটি প্যাটার্ন তৈরি করুন ; #|##একটি সংক্ষিপ্তকরণ AlternativesAlphabetস্থানগুলির সাথে প্যাটার্নের সাথে মেলে এমন বর্ণগুলির প্রতিস্থাপন করুন ।


মধ্যবর্তী পদক্ষেপের উদাহরণ:

"codegolf";
Split[Characters@#,#==1&@*Order]  &@%
Except[#|##,_String]&@@@         #&@%
Alphabet[]/.#->" "&/@               %
{{"c", "o"}, {"d", "e", "g", "o"}, {"l"}, {"f"}}

{Except["c" | "c" | "o", _String], 
 Except["d" | "d" | "e" | "g" | "o", _String], 
 Except["l" | "l", _String],
 Except["f" | "f", _String]}

{{" "," ","c"," "," "," "," "," "," "," "," "," "," "," ","o"," "," "," "," "," "," "," "," "," "," "," "},
 {" "," "," ","d","e"," ","g"," "," "," "," "," "," "," ","o"," "," "," "," "," "," "," "," "," "," "," "},
 {" "," "," "," "," "," "," "," "," "," "," ","l"," "," "," "," "," "," "," "," "," "," "," "," "," "," "},
 {" "," "," "," "," ","f"," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "}}

2

গল্ফস্ক্রিপ্ট, 22 21 বাইট

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

nঅন্তর্নির্মিত চূড়ান্ত পুনরায় সংজ্ঞায়নের জন্য বাইট ধন্যবাদ ।

{.n>{}{'
'\}if:n}%:n;

ব্যাখ্যা (কিছুটা আলাদা সংস্করণ সহ):

{.n>{}{"\n"\}if:n}%:n; # Full program
{                }%    # Go through every character in the string
 .n>         if        # If ASCII code is greater than previous...
                       # (n means newline by default, so 1st char guaranteed to fit)
    {}                 # Do nothing
      {"\n"\}          # Else, put newline before character
               :n      # Redefine n as the last used character
                   :n; # The stack contents are printed at end of execution
                       # Literally followed by the variable n, usually newline
                       # So because n is by now an ASCII code...
                       # ...redefine n as the new string, and empty the stack

2

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

^
;¶
{`;.*
¶;ABCDEFGHIJKLMNOPQRSTUVWXYZ
¶¶
¶
)+`;(.*)(.)(.*¶)\2
$.1$* $2;$3
;.*

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

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


2

05 এ বি 1 ই , 18 বাইট

ćIgµ¶?AvDyÊið?ë¼?ć

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

ćশেষের উপাদানটি বের করার পরে স্ট্যাকের ফাঁকা স্ট্রিং / তালিকা রেখে 05AB1E (এক্সট্রাক্ট 1) এর সাথে সমস্যা হয়েছে । এই সমাধানটি এটির জন্য না থাকলে 1-2 বাইট কম হত।

ćIgµ¶?AvDyÊið?ë¼?ć  Implicit input 
ć                   Extract the 1st char from the string
 Igµ                While counter != length of the string
    ¶?              Print a newline
      Av            For each letter of the lowercased alphabet
        DyÊ         Is the examined character different from the current letter?
           ið?      If true, then print a space

              ë¼?ć  Else increment the counter, print the letter and push
                    the next character of the string on the stack

আসলে, এর ð,অর্থ "একটি স্পেস এবং একটি নিউলাইন মুদ্রণ করুন"।
এরিক আউটগলফার

তুমি ঠিক বলছো. আসলে একটি নতুন লাইন মুদ্রণের জন্য কোডটি স্থির করা হয়েছে।
স্কটিনেট

2

রেটিনা , 130 126 বাইট

$
¶A
{-2=`
$'
}T`RL`_o`.$
+`(?<=(.)*)((.).*¶(?<-1>.)*(?(1)(?!)).+\3.*$)
 $2
(?<=(.)*)((.).*¶(?<-1>.)*(?<-1>\3.*$))
¶$2
}`¶.*$

এটি অনলাইন চেষ্টা করুন! সম্পাদনা: @ মার্টিনইেন্ডারের বর্ণমালা জেনারেটর ব্যবহার করে 4 বাইট সংরক্ষণ করা হয়েছে ব্যাখ্যা:

$
¶A
{-2=`
$'
}T`RL`_o`.$

বর্ণমালা যুক্ত করুন।

+`(?<=(.)*)((.).*¶(?<-1>.)*(?(1)(?!)).+\3.*$)
 $2

বর্ণমালায় তাদের অবস্থানের সাথে যতটা সম্ভব অক্ষর সারিবদ্ধ করুন।

(?<=(.)*)((.).*¶(?<-1>.)*(?<-1>\3.*$))
¶$2

প্রথম অক্ষরের আগে একটি নতুন লাইন শুরু করুন যা প্রান্তিককরণ করা যায়নি।

}`¶.*$

বর্ণমালা মুছুন, তবে কোনও ভুল চিহ্নযুক্ত অক্ষর না পাওয়া পর্যন্ত আবার কিছু করুন।


এটি কেবলমাত্র একটি লাইন মুদ্রণ করবে বলে মনে হচ্ছে পরবর্তী লাইনে অক্ষরগুলি প্রান্তিককরণ নয়।
জাস্টিন মেরিনার

@ জাস্টিনমারিনার আমার খারাপ, আমি আমার শেষ গল্ফে টাইপো তৈরি করেছি এবং এটি সঠিকভাবে পরীক্ষা করতে ব্যর্থ হয়েছি।
নীল

2

কিউ / কেডিবি + , 48 45 বাইট

সমাধান:

-1{@[26#" ";.Q.A?x;:;x]}@/:(0,(&)(<=':)x)_x:;

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

দ্রষ্টব্য: Q / kdb + এর জন্য কোনও টিআইও নেই বলে এই সমাধানের কে (ওকে) বন্দরের লিঙ্ক ।

উদাহরণ:

q)-1{@[26#" ";.Q.A?x;:;x]}@/:(0,(&)(<=':)x)_x:"STACKEXCHANGE";
                  ST
A C       K
    E                  X
  C    H
A            N
      G
    E

q)-1{@[26#" ";.Q.A?x;:;x]}@/:(0,(&)(<=':)x)_x:"BALLOON";
 B
A          L
           L  O
              O
             N

ব্যাখ্যা:

ডান থেকে বামে কি ব্যাখ্যা করা হয়। সমাধানটি দুটি ভাগে বিভক্ত। প্রথমে স্ট্রিংটি বিভক্ত করুন যেখানে পরবর্তী অক্ষর বর্তমানের চেয়ে কম বা সমান:

"STACKEXCHANGE" -> "ST","ACK","EX","CH","AN","G","E"

তারপরে 26 টি শূন্যের স্ট্রিং নিন এবং বর্ণমালায় যেখানে ইনপুট প্রদর্শিত হয় সেই সূচকগুলিতে এটিতে ইনপুটটি প্রয়োগ করুন এবং স্টডআউটে মুদ্রণ করুন।

"__________________________" -> __________________ST______

ভাঙ্গন:

-1{@[26#" ";.Q.A?x;:;x]}each(0,where (<=':)x) cut x:; / ungolfed solution
-1                                                  ; / print to stdout, swallow return value
                                                  x:  / store input as variable x
                                              cut     / cut slices x at these indices
                            (               )         / do this together
                                     (<=':)x          / is current char less-or-equal (<=) than each previous (':)?
                               where                  / indices where this is true
                             0,                       / prepended with 0
                        each                          / take each item and apply function to it
  {                    }                              / lambda function with x as implicit input
   @[      ;      ; ; ]                               / apply[variable;indices;function;arguments]
     26#" "                                           / 26 take " " is "      "...
            .Q.A?x                                    / lookup x in the uppercase alphabet, returns indice(s)
                   :                                  / assignment
                     x                                / the input to apply to these indices

নোট:

  • -4 বাইটগুলি কে 4 সংস্করণ দিয়ে পূর্ব প্রতিস্থাপন করে

2

পাওয়ারশেল, 70 63 বাইট

-7 বাইট ধন্যবাদ @ ভেস্কাহ

$args|%{if($_-le$p){$x;rv x}
$x=("$x"|% *ht($_-65))+($p=$_)}
$x

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

ব্যাখ্যা:

বিভক্ত যুক্তিতে প্রতিটি চরিত্রের জন্য:

  • আউটপুট স্ট্রিং $xএবং স্পষ্ট $xমান ( অপসারণ-পরিবর্তনশীলেরrv জন্য উপনাম ), যদি বর্তমান বর্ণের একটি কোড আগের অক্ষরের কোডের সাথে কম বা সমমান ( ) হয়।-le
  • $xএটিতে সঞ্চয় করুন এবং বর্তমান অক্ষরটি এতে যুক্ত করুন $x। এছাড়াও এটি পূর্বের অক্ষরের মানকে সতেজ করে।

শেষ আউটপুট $x


1
63 স্প্ল্যাটিং ব্যবহার করে বাইটস|% *htকিছু বাইট সংরক্ষণ করার জন্য ব্যবহার করার চেষ্টা করেছিলেন তবে দেখে মনে হচ্ছে এটি এমনকি ভেঙে গেছে।
ভেস্কাহ

1

জেলি , 24 21 বাইট

3 বাইট আউটগলফার এরিককে ধন্যবাদ।

O64;I%26’⁶ẋЀ;"⁸Ẏs26Y

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


8
আমি বিশ্বাস করি এটি "বেলুন" ইনপুটটির জন্য ব্যর্থ হয় - পুনরাবৃত্ত অক্ষরগুলি একই লাইনে থাকে।
জাস্টিন মেরিনার


1

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

f=([...s])=>s[0]?(g=i=>i>35?`
`+f(s):(i-parseInt(s[0],36)?" ":s.shift())+g(i+1))(10):""

বড় হাতের বা ছোট হাতের ইনপুট গ্রহণ করে। ইনপুট ক্ষেত্রে আউটপুট মেলে।

টেস্ট


1

হাস্কেল, 81 74 73 বাইট

q@(w:y)!(x:z)|w==x=x:y!z|1<2=min ' 'x:q!z
x!_=x
a=['A'..'Z']++'\n':a
(!a)

লাইকনিতে 1 বাইট সংরক্ষণ করা হয়েছে !

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

হাসেল হগস অপ্টিমাইজেশন

  1. হিউস ইন্টারপ্রেটার আমাকে এর (!cycle$['A'..'Z']++"\n")পরিবর্তে আরও একটি বাইট বাঁচাতে দেয় : (!cycle(['A'..'Z']++"\n"))তবে জিএইচসি আগেরটি পছন্দ করে না(এটি এখন অপ্রচলিত; লাইকোনি ইতিমধ্যে সেই লাইনটি এমনভাবে পুনরায় লিখেছেন যাতে 1 বাইট সংরক্ষণ করা হয়েছে))

  2. স্পষ্টতই, হুগসের তালিকার প্যাটার্ন ম্যাচারের আশেপাশে বন্ধনীগুলিরও দরকার নেই, তাই আমি আরও দুটি বাইটগুলি থেকে: সংরক্ষণ q@(w:y)!(x:z)করতে পারি q@(w:y)!x:z


আপনি এটি দিয়ে একটি বাইট সংরক্ষণ করতে পারেন a=['A'..'Z']++'\n':a;(!a)। হুগসের কাছে এখন কিছুটা ল্যাক্সারের নিয়ম আছে বলে মনে হচ্ছে Interest
লাইকনি

@ লাইকোনি আমি এখন কয়েক মাস ধরে হাস্কেলকে দেখছি এবং এটি আমাকে অবাক করে দেবে না। আমি a=...:aকৌশলটি পছন্দ করি। ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু

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

@ উইট উইজার্ড আমি অবগত ছিলাম না। আমি জিএইচসি-তে ত্রুটি পেয়েছি, এটি সঠিক ধারণা দেয়।
ক্রিশ্চিয়ান লুপাস্কু



1

কাঠকয়লা , 15 বাইট

Fθ«J⌕αι⁺ⅉ‹⌕αιⅈι

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

 θ              Input string
F «             Loop over characters
     α     α    Uppercase letters predefined variable
      ι     ι   Current character
    ⌕     ⌕     Find index
             ⅈ  Current X co-ordinate
         ‹      Compare
        ⅉ       Current Y co-ordinate
       ⁺        Sum
   J            Jump to aboslute position
              ι Print current character


1

কে (এনএনজি / কে) , 29 28 বাইট

{{x@x?`c$65+!26}'(&~>':x)_x}

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

{ } যুক্তি দিয়ে ফাংশন x

>':x প্রতিটি চরের জন্য, এটি কি আগের চরের চেয়ে বেশি?

~ অস্বীকার করা

& যেখানে (কোন সূচকগুলিতে) আমাদের সত্য

( )_xxএই সূচকগুলি কাটা , স্ট্রিংগুলির একটি তালিকা ফেরত দিন

{ }' এই স্ট্রিংগুলির জন্য প্রতিটি

`c$65+!26

ইংরেজি বর্ণমালা

x?প্রতিটি অক্ষরের প্রথম উপস্থিতির সূচকটি সন্ধান করুন x, 0Nযদি পাওয়া না যায় তবে (একটি বিশেষ "নাল" মান) ব্যবহার করুন

x@xযে সূচক ; 0Nরিটার্নগুলির সাথে সূচীকরণ " ", সুতরাং আমরা একটি দৈর্ঘ্য -26 স্ট্রিং পাই যা থেকে বর্ণগুলি xতাদের বর্ণানুক্রমিক অবস্থানে থাকে এবং সমস্ত কিছুই ফাঁকা থাকে s


1

আর , 129 117 বাইট

function(s){z={}
y=diff(x<-utf8ToInt(s)-64)
z[diffinv(y+26*(y<0))+x[1]]=LETTERS[x]
z[is.na(z)]=" "
write(z,1,26,,"")}

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

ব্যাখ্যা (অবরুদ্ধ):

function(s){
 z <- c()                  # initialize an empty vector
 x <- utf8ToInt(s)-64      # map to char code, map to range 1:26
 y <- diff(x)              # successive differences of x
 idx <- cumsum(c(          # indices into z: cumulative sum of:
    x[1],                  # first element of x
    ifelse(y<=0,y+26,y)))  # vectorized if: maps non-positive values to themselves + 26, positives to themselves
 z[idx] <- LETTERS[x]      # put letters at indices
 z[is.na(z)] <- " "        # replace NA with space
 write(z,"",26,,"")        # write z as a matrix to STDOUT ("") with 26 columns and empty separator.

1

আর , 95 বাইট

যদি আপনি শব্দের পাল্টা অবস্থানের মধ্যে অক্ষরটির মুখোমুখি হন এবং চিঠিটি মুদ্রণ করেন তবে অন্যথায় কোনও স্থানকে 1 করে একটি কাউন্টারকে অগ্রসর করার সময় বারবার উপরের বর্ণমালাটি দিয়ে চালান।

function(s)while(F>""){for(l in LETTERS)cat("if"((F=substr(s,T,T))==l,{T=T+1;l}," "));cat("
")}

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


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