একটি স্ট্রিং স্প্রিংফাই


11

স্যান্ডবক্স পোস্ট এখানে

একটি স্ট্রিং "স্প্রিংফাইফাই" করে এমন একটি ফাংশন বা প্রোগ্রাম তৈরি করুন।

  • ইনপুট স্টিডিনের একটি স্ট্রিং বা নিকটতম বিকল্প হবে
  • ইনপুটটিতে কেবল প্রিন্টযোগ্য এএসসিআইআই এবং / অথবা স্পেস থাকবে
  • আউটপুট স্টডআউট বা নিকটতম বিকল্পে হবে
  • একটি চলন্ত নিউলাইন এবং স্পেস গ্রহণযোগ্য

একটি স্ট্রিংকে কীভাবে বসানো যায় to

  1. স্ট্রিংকে প্রয়োজনীয় যতগুলি এএসসিআইআই স্প্রিং কয়েলে ফর্ম্যাট করুন
  2. নিকটবর্তী কয়েল পর্যন্ত ফাঁকা জায়গা দিয়ে কয়েলগুলিকে প্যাড করুন
  3. কয়েলগুলির চারপাশে বসন্ত অনুসরণ করে, অক্ষরগুলি পড়ুন

এটি একটি ASCII বসন্ত কয়েল:

#
# ####
 #    #
# ####
#

কোথায় #গুলি স্ট্রিং এর অক্ষর

এখানে একটি উদাহরণ:

abcdefghijklmnopqrstuvwxyz

হয়ে

a
b cdef
 g    h
i jklm
n
o
p qrst
 u    v
w xyz.
.

যেখানে .s দৃশ্যমানতার জন্য স্থানগুলি প্রতিস্থাপন করে।

তারপরে, এএসসিআইআই বসন্তটি নীচের দিকে, লুপগুলির চারপাশে gএবং uদু'বার আঘাত করে স্ট্রিংটি আবার পড়ে :

1| a  <-3
 V b cdef
    g    h
4| i jklm
 V n  2->
  ...

... দান:

abgjklmhfedcginopuxyz vtsrquw (একটি পিছনে স্থান সহ)

পরীক্ষার কেস

(পেছনের স্থানগুলি হাইলাইট করতে কোটেশন যোগ করা হয়েছে - দয়া করে আইও এর শর্তাবলী উপেক্ষা করুন)

I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "

I: "!@#"
O: "!@         #   "

I: ""
O: ""

I: "12345 67890"
O: "12690  7 54368 "

I: " "
O: "               "

নোট করুন আউটপুট দৈর্ঘ্য সর্বদা 15 এর একাধিক, একটি বসন্ত কয়েল দৈর্ঘ্য

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins


আমি মনে করি এটি কুণ্ডলী বরাবর নিদর্শন অনুসরণ করা অনেক চ্যালেঞ্জ হত।
ম্যাজিক অক্টোপাস উরান


codegolf.stackexchange.com/a/107531/59376 পরিণত হয়েছে আমি লিখিত হিসাবে চ্যালেঞ্জটি বুঝতে পারি নি, ঠিক চ্যালেঞ্জ আহা ha
যাদু অক্টোপাস উরন

উত্তর:


2

জেলি , 26 বাইট

“4ṘƝ;þ¦Ɱ’b®¤ị
;⁶x14©¤s®ṖÇ€

TryItOnline!

কিভাবে?

“4ṘƝ;þ¦Ɱ’b®¤ị - Link 1, output for a single coil: char array
           ¤  - nilad followed by link(s) as a nilad
“4ṘƝ;þ¦Ɱ’     - base 250 number, 13140239220751650
          ®   - retrieve from register (14 from main link)
         b    - convert to base, [1,2,7,10,11,12,13,8,6,5,4,3,7,9,0]
            ị - index into the char array

;⁶x14©¤s®ṖÇ€ - Main link: theString
      ¤      - nilad followed by link(s) as a nilad
 ⁶           - a space character
  x          - repeated
   14©       - place 14 into the register and yield 14
;            - concatenate theString with the 14 spaces
       s     - split into chunks of length
        ®    -     retrieve from register (14)
         Ṗ   - pop last entry from the result (removes the space only last entry of 14 chars or less)
          Ç€ - call the last link (1) as a monad for €ach
             - implicit print

5

পাইথন 2, 104 102 98 বাইট

f=lambda t:''.join((t+' '*13)[ord(x)-97+y*14]for y in range(len(t)/14+1)for x in'abgjklmhfedcgin')

মন্তব্য সাহায্যের জন্য ধন্যবাদ!

https://tio.run/#2VDVy

মূল:

t=raw_input()+' '*13
print''.join(t[ord(x)-97+y*14]for y in range(len(t)/14)for x in'abgjklmhfedcgin')

আপনি কেবল input()বিন্যাসে ইনপুট ব্যবহার করতে এবং নিতে পারেন "<stuff>"
হাইপারনিউটারিনো

দুর্দান্ত প্রথম গল্ফ! অ্যালেক্স এল যেমন উল্লেখ করেছেন, আমরা ইনপুটটি উদ্ধৃতিতে নিয়ে যাওয়ার অনুমতি দিই। আপনি lambdaপ্রোগ্রামের চেয়ে বেনামে ফাংশন দেওয়ার জন্য একটি ব্যবহার করতে পারেন - এটি প্রায়শই খাটো হয়
xnor

একটি ইনডেক্সেরর দিয়ে খালি স্ট্রিং পরীক্ষার ক্ষেত্রে ব্যর্থ। আমি মনে করি আপনার 13 থেকে 14 পরিবর্তন করতে হবে এবং চূড়ান্ত মানটি পপ অফ করতে হবে (অনেকটা আমার জেলি উত্তরটির মতো)।
জোনাথন অ্যালান

... পরিবর্তন +13করতে +14এবং +1করতে +(len(t)%14>0)এটা করতে পারে, কিন্তু একটি সংক্ষিপ্ত উপায় নেই হতে হবে।
জোনাথন অ্যালান

3

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

f=
s=>s.replace(/.{1,14}/g,s=>'0169abc7543268d'.replace(/./g,c=>s['0x'+c-0]||' '))
<input oninput=o.textContent=f(this.value)><pre id=o>

হেক্সাডেসিমাল স্ট্রিং নির্লজ্জভাবে @ETH প্রোডাকশন থেকে চুরি হয়েছে।


@ ইথ প্রডাকশনস ধন্যবাদ, স্থির।
নিল

উজ্জ্বল!
dodov

স্নিপেটটি টাইপ করার সাথে সাথে ফলাফলটি আপনাকে কীভাবে দেখতে দেয় তা খুব সুন্দর
মাইল্ডলি মিল্কিওয়েস্ট


2

জাভাস্ক্রিপ্ট (ES7), 144 143 141 114 104 103 বাইট

10 বি সংরক্ষণের জন্য ETHProductions ধন্যবাদ!

a=>[...b=a+' '.repeat(15-a.length%15)].map((_,c)=>b['0x'+'0169abc7543268d'[c%15]-0+(c/15|0)*14]).join``

উদাহরণ

f=a=>[...b=a+' '.repeat(15-a.length%15)].map((_,c)=>b['0x'+'0169abc7543268d'[c%15]-0+(c/15|0)*14]).join``
f('abcdefghijklmnopqrstuvwxyz')

আউটপুট

abgjklmhfedcginopuxyz vtsrquw 

খুব সুন্দর. অ্যারেটিকে হেক্সাডেসিমাল স্ট্রিংয়ে +('0x'+whatever)রূপান্তর করে এবং কোনও সংখ্যায় রূপান্তর করে আপনি কিছু বাইট সংরক্ষণ করতে পারেন :(_,c)=>b[(c/15|0)*14+ +('0x'+'0169abc7543268d'[c%15])]
ETH প্রোডাকশনগুলি

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

এমনকি '0x'+'...'[c%15]-0+(c/15|0)*14নিজেকে একজোড়া বন্ধনী
বাঁচাতেও করতে পেরেছিলেন

তুমি ঠিক বলছো. যোগ করা হয়েছে।
লুক

2

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

{S:g/(.)**1..14/{[~] $0["abgjklmhfedcgin".ords X-97]X//" "}/}

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

প্রাথমিক কাঠামোটি হ'ল:

{                                  }  # A lambda.
 S:g/(.)**1..14/{                }/   # Regex-replace segments of 1-14 characters, with:
                     $0               #   The single-char submatches captured by the parens.
                       [  ]           #   Index them using certain indices (see below).
                           X//" "}    #   Replace each undefined element with a space.
                 [~]                  #   Concatenate the characters.

প্রতিটি 14-অক্ষর বিভাগে সূচক করতে ব্যবহৃত অভিব্যক্তিটি "abgjklmhfedcgin".ords X- 97যা নিম্নরূপে কাজ করে:

  1. হার্ড-কোডেড স্ট্রিং নিন abgjklmhfedcgin
  2. তার codepoints পান: 97 98 103 106 107 108 109 104 102 101 100 99 103 105 110
  3. বিয়োগ প্রতিটি নম্বর থেকে 97: 0 1 6 9 10 11 12 7 5 4 3 2 6 8 13

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

{[~] .comb(14)».comb»[0,1,6,9..12,7,5...2,6,8,13].flat X//" "}

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

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

প্রাথমিক কাঠামোটি হ'ল:

{                                    }  # A lambda.
     .comb(14)                          # Split the argument into substrings of <= 14 chars.
              ».comb                    # Split each substring into a list of characters.
                    »[  ]               # Index each list using the same indices (see below).
                         .flat          # Flatten the resulting nested list.
                               X//" "   # Replace each undefined element with a space.
 [~]                                    # Concatenate the list to get a string again.

একই সূচকের উপরের মতো, কিন্তু যেহেতু আমরা আহ্বান করছি .flatযাহাই হউক না কেন, আমরা একটি নেস্টেড (কিন্তু 1 বাইট খাটো) অভিব্যক্তি তাদের জন্য ব্যবহার করতে পারেন: 0,1,6,9..12,7,5...2,6,8,13

(তুচ্ছ দেখায়, তবে এটি রাকুডো পার্ল 6 এর পার্সিং অদ্ভুততার উপর নির্ভর করে এটি সম্ভবত একটি বাগ । এই বাগটি ব্যবহার না করে এটি লেখার জন্য, কাউকে চারপাশে পেরেন যুক্ত করতে হবে 5...2))


2

বেফুঞ্জ -৩৩, ৯ by বাইট

<>0>v%2g3\p89:-1+*"!"!:+1<_@#`0:~
,^\,_\:98g\9p1+:76+`#v_:~^
^,,g96g98g9+67,,,,,$$_
==    =  ====

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

হাইলাইট করা বিভিন্ন উপাদান অংশ সহ এটি উত্স কোডের একটি ভাঙ্গন।

কার্যকরকরণের পথগুলির সাথে উত্স কোড হাইলাইট করা

*মূল লুপটি খেলার মাঠের ডানদিকে প্রায় জড়ো করে ডান থেকে বাম চালানো শুরু করে। এখানেই আমরা স্টিডিনের প্রথম চরিত্রটি পড়ি এবং এটি কোনও ইওএফ থাকলে শেষ হয়।
*পরবর্তী বিভাগটি নিশ্চিত করে যে কোনও ইওএফ অক্ষর সূত্রটি ব্যবহার করে স্পেসে রূপান্তরিত হয়েছে c = c + 31*!(c+1)। যদিও এটি প্রথম পুনরাবৃত্তির ক্ষেত্রে প্রযোজ্য নয়, এটি পরবর্তী পাসগুলিতে ঘটতে পারে।
*চরিত্রের অনুলিপি অস্থায়ী মেমোরিতে সংরক্ষণ করা হয় এবং তারপরে *অক্ষরের আউটপুট হওয়া উচিত কিনা তা নির্ধারণের জন্য বর্তমান সূচকটির একটি লাইন চারটি লাইনে টেবিলে সঞ্চালিত হয় ।
*চরিত্রটি যদি আউটপুট হতে হয় তবে আমরা বাম শাখাটি নিই। এরপরে যে অদলবদল হতে চলেছে তা বাতিল করতে এখানে একটি অদলবদল করা হয় এবং তারপরে ডানদিকে ডানদিকে চাপ দিতে একটি শূন্য করা হয়।
*যদি চরিত্রটি আউটপুট না হয় তবে আমরা সূচি কাউন্টারের নীচে স্ট্যাকটি এটিকে অদলবদল করব (এটি স্ব্যুপ যা বাম শাখায় বাতিল হয়ে যায়)। এবং উভয় ক্ষেত্রেই আমরা বর্তমান সূচী অফসেটে অক্ষরটিকে স্মৃতিতে সংরক্ষণ করি, সূচকে বৃদ্ধি করি এবং এটি 13 এর চেয়ে বেশি হয় কিনা তা পরীক্ষা করি
*If না হলে আমরা পরবর্তী অক্ষরটি স্টিডিন থেকে পড়ি এবং অভ্যন্তরীণ লুপটি পুনরাবৃত্তি করি।
*যদি এটি হয় তবে আমরা 14 টি অক্ষরের একটি সেট শেষ করব, 7 টি আউটপুট ( abgjklm) হয়েছে এবং 7 টি স্ট্যাকের ( cdefhin)। আমরা ড্রপ গত দুই, আউটপুট অবশিষ্ট 5 ( hfedc), এবং তারপর উদ্ধার এবং আউটপুট বিশেষ ক্ষেত্রে g, iএবং nমেমরি থেকে।
*এবং এটি আমাদের মূল লুপের শুরুতে ফিরিয়ে আনে, যেখানে আমরা পরবর্তী 14 টি অক্ষরের জন্য পুনরায় প্রক্রিয়াটি পুনরাবৃত্তি করি।


সুন্দর ব্যাখ্যা, ভাল কাজ হয়েছে
মাইল্ডলি মিল্কিওয়েস্ট

1

গণিত, 77 72 বাইট

5 বাট বাঁচানোর জন্য জংহওয়ান মিনকে ধন্যবাদ!

Join@@Partition[#,14,14,{1,1}," "][[;;,LetterNumber@"abgjklmhfedcgin"]]&

নামহীন ফাংশন অক্ষরের একটি তালিকা ইনপুট হিসাবে গ্রহণ করে এবং অক্ষরের একটি তালিকা ফেরত দেয়। Partition[#,14,14,{1,1}," "]ইনপুটটি 14 দৈর্ঘ্যের সাবলিস্টগুলিতে বিভক্ত করে, প্রয়োজনে স্পেসগুলির সাথে প্যাডিং। LetterNumber@"abgjklmhfedcgin"মূল্যায়ন করে {1,2,7,10,11,12,13,8,6,5,4,3,7,9,14}, যা প্রতিটি দৈর্ঘ্য -14 সাবলিস্টে (7 ম উপাদান যথাযথভাবে পুনরাবৃত্তি করতে) নেওয়ার আদেশকে নির্দেশ করে। তারপরে [[;;,...]]সমস্ত দৈর্ঘ্যের 14 টি সাবলিস্টগুলিকে সেই ক্রমে নিয়ে যায় এবং Join@@উত্তরগুলিতে একত্রিত হয়।

পূর্ববর্তী জমা:

Join@@Partition[#,14,14,{1,1}," "][[All,83224017339955102~IntegerDigits~16]]&

1
LetterNumber@"abgjklmhfedcgin"তালিকাটি সংক্ষেপে সংক্ষিপ্ত করার উপায়। এছাড়াও ;;পরিবর্তে Allএকটি বাইট পরিমাণ সঞ্চয় হয়।
জংহওয়ান মিন

দুর্দান্ত পরামর্শ!
গ্রেগ মার্টিন

1

পাইথন 3 , 86 বাইট

lambda s:''.join(t[i%14]for t in zip(*[iter(s+' '*13)]*14)for i in b'Tq>]zQ|1/X;:L$o')

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

বোনাস হিসাবে, স্ট্রিংটি Tq>]zQ|1/X;:L$oএকটি বৈধ সিজেএম প্রোগ্রাম যা সারণীকৃত স্ট্যান্ডার্ড ইনপুটটিতে অনন্য অক্ষরগুলি মুদ্রণ করে। এটি অনলাইন চেষ্টা করুন! (+ ব্যাখ্যা)


0

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

foreach(str_split($argv[1],14)as$s)for($i=0;$c=abgjklmhfedcgin[$i++];)echo$s[ord($c)-97]??" ";

কমান্ড লাইন আর্গুমেন্টকে 14-বাইট খণ্ডগুলিতে বিভক্ত করে উপ-স্ট্রিংয়ের সূচক হিসাবে অনুবাদ স্ট্রিংয়ের মাধ্যমে লুপ করে। সাথে চালাও php -nr '<code>' <string>

আমি ??খালি স্ট্রিং (একটি "অবৈধ" সূচক জন্য) নਾਲ হিসাবে গ্রহণ করে তা জানতে পেরে আনন্দিত হয়েছিল ।


0

রুবি, 83 বাইট

->s{v="";(s+" "*13).scan(/.{14}/){|y|"0169:;<7543268=".chars{|o|v+=y[o.ord-48]}};v}

প্রথম ধারণাটি হেক্স নম্বর ব্যবহার করা হয়েছিল, তবে অর্ড -৪৮ আরেকটি বাইট সংরক্ষণ করে (থ্রক্সের উত্তর থেকে চুরি হয়েছে)।

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