bfcat - একটি ফাইলকে একটি brain brain *** প্রোগ্রাম হিসাবে এনকোড করুন


18

চ্যালেঞ্জ

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

  1. ধরুন সমস্ত ইনপুট ASCII হিসাবে এনকোড করা আছে।

  2. ধরুন আউটপুটযুক্ত বিএফ প্রোগ্রাম একটি পরিবেশে অসীম টেপ সহ কার্যকর করবে।

  3. ধরুন পয়েন্টারটি 0 সেল থেকে শুরু হয়ে প্রতিটি ঘর শূন্যের মান থেকে শুরু করে starts

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

  5. টেপটি দ্বিগুণ অসীম।

  6. দোভাষী দ্বারা প্রদত্ত সমস্ত কক্ষগুলি হ'ল 8-বিট কোষ। পূর্বাভাসযোগ্য এবং বুদ্ধিমান বিষয়ে ওভারফ্লো এবং আন্ডারফ্লো মোড়ানো।

উদাহরণ

স্পেস স্ট্রিং

ইনপুট দেওয়া হয়েছে , আপনার প্রোগ্রাম / ফাংশন ফিরে আসতে পারে:

+++++ +++++
+++++ +++++
+++++ +++++
++ .

বিস্ময়বোধক বিন্দু

ইনপুট দেওয়া হয়েছে !, আপনার প্রোগ্রাম / ফাংশন ফিরে আসতে পারে:

+++++ +++++
+++++ +++++
+++++ +++++
+++
.

দুটি চিঠি

ইনপুট দেওয়া হয়েছে hi, আপনার প্রোগ্রাম / ফাংশন ফিরে আসতে পারে:

+++++ +++++
+++++ +++++
+++++ +++++
+++++ +++++
+++++ +++++

+++++ +++++
+++++ +++++
+++++ +++++
+++++ +++++
+++++ +++++

++++
.
+
.

এটি , তাই বাইট জিতের ক্ষুদ্রতম সংখ্যার কোড। শুভকামনা।


10
আরও টেস্টকেস দয়া করে।
ফাঁস নুন

1
রিভিশন 9-এ উল্লিখিত নির্দেশিকা ঠিক কী ?
ব্যবহারকারী 8397947

4
আমি এটি আবার খুলছি। আমি মনে করি পিটারের উদ্বেগকে মোকাবেলা করা হয়েছে এবং নকল হিসাবে কী গণনা করা হয় সে সম্পর্কে আমাদের মোটামুটি পরিষ্কার sensক্যমত্য রয়েছে এবং এই চ্যালেঞ্জটি সেই মানদণ্ডগুলি পূরণ করে না।
মার্টিন ইন্ডার

"পূর্বাভাসযোগ্য এবং বুদ্ধিমান উপায়ে ওভারফ্লো এবং আন্ডারফ্লো মোড়ানো" - সুতরাং 127 + 1 মোড়কে 0 এবং -128-1 এ 0 টি মোড়কও, সঠিক? এটি সম্ভব সম্ভাব্য এবং বুদ্ধিমান পদ্ধতি।
ব্যবহারকারী 253751

1
নিখুঁতভাবে
ব্যবহারকারী 8397947

উত্তর:


18

জেলি , 8 বাইট

O”+ẋp“.>

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

নমুনা রান

ইনপুট জন্য hi, এই প্রোগ্রাম মুদ্রণ

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++>

(লাইনফিড ছাড়া) যা পরিবর্তে মুদ্রণ করেhi

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

O”+ẋp“.>  Main link. Argument: s (string)

O         Ordinal; convert each character in s into its code point.
 ”+       Yield the character '+'.
   ẋ      Repeat '+' k times, for each k in the code points.
     “.>  Yield the string ".>".
    p     Take the Cartesian product of both results.

আপনার সীমিত স্মৃতিতে কাজ করে না, আমার কাজ করে।
লিকি নুন

5
আসলে তা না. আমরা দুজনেই মুদ্রণের আগে পুরো আউটপুট মেমরির মধ্যে সঞ্চয় করি। বিএফ ইন্টারফেসারদের জন্য একটি বিশাল পর্যাপ্ত টেপযুক্ত, টেপটি করার আগে এটি একটি ইস্যুতে পরিণত হবে।
ডেনিস

.>আউটপুট কেন প্রদর্শিত হবে না?
বিড়াল

2
@ কেট কারণ কার্টেসিয়ান পণ্য ( p) প্রতিটি ( ;€) এর সাথে সংযোজনের চেয়ে কম থাকে । এই আউটপুট প্রোগ্রামগুলি মুদ্রণের পরে এবং স্যুইচিংয়ের আগে ঘরে দ্বিগুণ। যেহেতু আমরা ঘরে কখনই ঘুরে দেখি না, এটি আউটপুটকে প্রভাবিত করে না।
ডেনিস

@ ডেনিস আহ, আকর্ষণীয়
বিড়াল

55

ব্রেনফাক, 55 51 বাইট

,[>+++[>+++++++<-]>[<++>>+++<-]<+<[>.<-]>+++.>>-.,]

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

উদাহরণস্বরূপ আউটপুট hi(লাইনফিড ছাড়া):

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>

ব্যাখ্যা

প্রোগ্রামটি লেখার সময় এটি টেপ জুড়ে চলে। পার্শ্ববর্তীটি ,[...,]একটি স্ট্যান্ডার্ড ইনপুট লুপ। প্রতিটি চরিত্রের জন্য, আমরা চারটি ঘর ব্যবহার করি:

[... x a b c ...]

xসেলটি কোথায় আমরা ইনপুট লিখি।

>+++[>+++++++<-]

এই ভাগে সেল ব্যবহার aএকটি লিখতে 21কোষে bএকটি মান গুণ মাধ্যমে 3এবং 7

>[<++>>+++<-]

এখন আমরা ব্যবহার 21লিখতে 42মধ্যে aএবং 63মধ্যে cদ্বারা গুন দ্বারা 2এবং 3যথাক্রমে। তারপর <+<প্যাচসমূহ কক্ষের ব্যাক xযখন বাঁক 42একটি মধ্যে 43(কোড বিন্দু +)। সংক্ষিপ্তবৃত্তি:

[... x 43 21 63 ...]

এখন প্রধান আউটপুট লুপ:

[>.<-]

এটি হ্রাস করার সময় xআমরা +প্রতিবার একটি মুদ্রণ করি ।

>+++.

শেষ হয়ে যাওয়ার পরে আমরা +সেলটি পুনরায় ব্যবহার করি , যোগ 3করে .

>>-.

অবশেষে, আমরা এ 63চলেছি, এটি হ্রাস 62( >) এবং আউটপুট যে। পরবর্তী পুনরাবৃত্তি এই ঘরটি হিসাবে ব্যবহার করবে x


5
আমি যদি আরও প্রতিনিধি থাকতাম তবে আমি এটিকে একটি অনুদান দিতাম।
ব্যবহারকারী 8397947

34

ব্রেইনফাক, 39 33 32 31 বাইট

-[-[>]<--<--],[[>.<+]>+.--.+<,]

টেপটিতে 45 টি থাকা অ্যালগরিদমটি এসোলাংয়ের ব্রেনফাক ধ্রুবক থেকে নেওয়া ।

এই উত্তরটি ধরে নিয়েছে যে আউটপুট প্রোগ্রামের দোভাষীর মোড়ক রয়েছে, আবদ্ধ সেল রয়েছে; এবং সেই ,বর্তমান কক্ষটি শূন্য করে (বোঝায় যে আউটপুট প্রোগ্রামটি ইনপুট ছাড়াই চালিত হয়)। এটি অনলাইন চেষ্টা করুন!

একটি (দীর্ঘতর) সমাধানের জন্য যা নিঃশর্ত কাজ করে, আমার অন্য উত্তরটি দেখুন

টেস্ট রান

ইনপুট জন্য Code Golf, নিম্নলিখিত আউটপুট উত্পন্ন হয়।

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.,-------------------------------------------------------------------------------------------------------------------------------------------------.,------------------------------------------------------------------------------------------------------------------------------------------------------------.,-----------------------------------------------------------------------------------------------------------------------------------------------------------.,--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.,-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.,-------------------------------------------------------------------------------------------------------------------------------------------------.,----------------------------------------------------------------------------------------------------------------------------------------------------.,----------------------------------------------------------------------------------------------------------------------------------------------------------.,

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

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

আমরা টেপের ঘরে একটি পূর্ণসংখ্যা 45 (বর্ণের কোড -) স্থাপন করে শুরু করি । নিম্নলিখিত কোডটি এটি অর্জন করে।

-      Decrement cell 0, setting it to 255.
[      While the cell under the head in non-zero:
  [>]    Advance to the next zero cell.
  <--    Decrement the cell to its left.
  <--    Decrement the next cell to the left.
]

আমরা লুপটি প্রবেশ করার আগে, টেপটি দেখতে এমন দেখাচ্ছে।

         v
000 000 255

এই তিনটি ঘর - -2 , -1 এবং 0 - কেবলমাত্র আমরা এই প্রোগ্রামটিতে ব্যবহার করব।

লুপের প্রতিটি পুনরাবৃত্তির প্রথমদিকে, ডানদিকে কোষটি হয়, তারপরে সেই ঘর এবং মাঝারি ঘরটি দু'বার হ্রাস করা হয়, নিম্নলিখিত অবস্থাটি রেখে।

     v
000 254 252

পরবর্তী 126 পুনরাবৃত্তির মধ্যে, প্রাথমিক -কক্ষটি মধ্যবর্তী কক্ষকে হ্রাস করে, [>]<ডানদিকের কক্ষে লাফ দেয় এবং --<--মাঝারি এবং ডান ঘরের হ্রাস পায়। ফলস্বরূপ, 3 টি মাঝারি ঘর (মডুলো 256 ) এবং 2 থেকে বিয়োগ করা হয় থেকে বিয়োগ করা হয় ডানদিকের ঘর থেকে বিয়োগ করা হয়।

যেহেতু 254 ÷ 3 (গেলিক ভাষার 256) = (254 + 256) ÷ 3 = 510 ÷ 3 = 170 এবং 252 ÷ 3 = 84 , ডানদিকে অবস্থিত সেল মধ্যম এক সামনে থেকে দূর করে zeroed হয়, নিম্নলিখিত রাষ্ট্র রেখে।

     v
000 132 000

একইভাবে লুপের প্রথম পুনরাবৃত্তিতে, পরবর্তী পুনরাবৃত্তিটি এখন মাঝারি ঘর থেকে 3 এবং বামতম কোষ থেকে 2 বিয়োগ করে, মাথাটি বামতম কোষে রেখে।

 v
254 129 000

পরবর্তী পুনরাবৃত্তিগুলি যেমন তাদের আগে 126 পুনরাবৃত্তির মতো, বামদিকের ঘর থেকে 3 এবং ডানদিকের ঘর থেকে 2 বিয়োগ করুন ।

যেহেতু 254 ÷ 3 (মোড 256) = 170 এবং 129 ÷ 2 (মোড 256) অপরিজ্ঞাত, তাই নিম্নলিখিত অবস্থাটি রেখে 170 বার এটি করা হয়।

 v
000 045 000

মাথার নীচে কোষটি শূন্য; লুপ শেষ হয়।

এখন আমরা আউটপুট উত্পন্ন করতে প্রস্তুত।

,      Read a character from STDIN and put it the leftmost cell.
[        While the leftmost cell is non-zero:
  [        While the leftmost cell is non-zero:
    >.     Print the content of the middle cell ('-').
    <-     Increment the leftmost cell.
  ]      If the leftmost cell held n, the above will print 256 - n minus signs
         which, when executed, will put n in cell 0 of the output program.
  >      Increment the middle cell, setting it to 46 ('.').
  .      Print its content ('.').
  --     Decrement the middle cell twice, setting it to 44 (',').
  .      Print its content (',').
         When executed, since the output program receives no input, the above
         will zero cell 0 of the output program.
  +      Increment the second cell, setting it back to 45 ('-').
  <,     Go back to the leftmost cell and read another character from STDIN.
]      Once EOF is reached, this will put 0 in the leftmost cell, ending the loop.

ফলাফল প্রাপ্ত বিএফ কেন আমার জন্য ইনপুট স্ট্রিংয়ে আবার অনুবাদ করে না? এই দোভাষী আমি ব্যবহার করছি, যা অন্যান্য উত্তরের জন্য কাজ করেছে।
উন্মাদ

2
এই দোভাষীর অনেকগুলি সেটিংস রয়েছে। 32 বাইট সংস্করণ জন্য, আপনি প্রয়োজন চাই ডাইনামিক মেমরি এবং ইনপুটের শেষ:\0
ডেনিস

10

ব্রেইনফাক, 35 13 43 বাইট

++[>+<------],[[>.>+<<-]>+++.->[<.>-]<--<,]

এই উত্তরটি কোনও অনুমান করে না আউটপুট প্রোগ্রামের দোভাষী সম্পর্কে না। এটি অনলাইন চেষ্টা করুন!

একটি সংক্ষিপ্ত সমাধানের জন্য (যা কেবলমাত্র কিছু দোভাষীর সাথে কাজ করে), আমার অন্য উত্তরটি দেখুন

টেস্ট রান

ইনপুট জন্য Code Golf, নিম্নলিখিত আউটপুট উত্পন্ন হয়।

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.-------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.---------------------------------------------------------------------------------------------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.-----------------------------------------------------------------------------------------------------++++++++++++++++++++++++++++++++.--------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.-----------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.---------------------------------------------------------------------------------------------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.------------------------------------------------------------------------------------------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++.---------------------------------

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

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

আমরা টেপের দ্বিতীয় কক্ষে পূর্ণসংখ্যা 43 (চরিত্রের কোড +) রেখে শুরু করি । নিম্নলিখিত কোডটি এটি অর্জন করে।

++         Increment the first cell twice, setting it to 2.
[          While the first cell in non-zero:
  >+         Increment the second cell.
  <------    Decrement the first cell six times.
]

এটি মূলত মডিউলার বিভাগ 2 ÷ 6 (256 মোড) সম্পাদন করে । যেহেতু (2 + + 256) ÷ 6 = 258 ÷ 6 = 43 , ফল 43 , যেমন উদ্দেশ্যে।

এখন আমরা আউটপুট উত্পন্ন করতে প্রস্তুত।

,      Read a character from STDIN and put it the first cell.
[        While the first cell is non-zero:
  [        While the first cell is non-zero:
    >.     Print the content of the second cell ('+').
    >+     Increment the third cell.
    <<-    Decrement the first cell.
  ]      If the first cell held n, the above prints n plus signs
         and puts n in the third cell.
  >+++   Add three to the second cell, setting it to 46 ('.').
  .      Print its content ('.').
  -      Decrement, setting it to 45 ('-').
  >      Advance to the third cell.
  [      While the third cell is non-zero:
    <.     Print the content of the second cell ('-').
    >-     Decrement the third cell.
  ]      If the first cell held n, the above prints n minus signs,
         thus negating the plus signs and zeroing the cell of the output program.
  <--    Subtract 2 from the second cell, setting it back to 43.
  <,     Go back to the first cell and read another character from STDIN.
]      Once EOF is reached, ',' will put 0 in the first cell, ending the loop.

উহ ভাই! আপনি 44-মেস-ক্রস-আউটটি ভাঙতে পারবেন না, আসুন! যাইহোক, এটি পরাস্ত করার আপনার প্রচেষ্টা মারাত্মকভাবে ব্যর্থ হয়েছে কারণ এটি প্রবাহিত হয় না বলে মনে হচ্ছে, আমার পর্দায় কিছু ময়লা রয়েছে (পিএইচপি, সম্ভবত?): পি
বিড়াল

2
মন্তব্যটি এড়াতে যে কোনও কিছু ...
ডেনিস


4

05 এ বি 1 ই , 12 11 বাইট

vyÇ`'+ׄ.>J

ব্যাখ্যা

v             # for each char in input string
 yÇ`          # convert to its ascii value
    '+×       # push the char '+' that many times
       „.>J   # push string ".>" and join with the plus signs
              # implicitly print combined string

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

@ আদনানকে ধন্যবাদ 1 বাইট সংরক্ষিত


'+×পরিবর্তে F'+}একটি বাইট সংরক্ষণ করুন।
আদনান

1
@ আদনান: ধন্যবাদ! আমি একটি "পুনরাবৃত্তি" কমান্ড সন্ধান করছিলাম।
এমিলিগনা

4

জাভা, 98 বাইট

class a{String A(char[]b){String z="";for(char B:b){for(int c=B;c-->0;)z+="+";z+=".>";}return z;}}

Stringগুলি স্থাবর ছাড়া আর কিছুই নয় char[] ইউটিলিটি পদ্ধতিগুলির একগুচ্ছ সাথে , সুতরাং আসুন ব্যবহার করা যাক!

Ungolfed:

class a {
    void A(char[] b) {
        for (char B : b) {
            for (int c = B; c-- > 0;)
                 System.out.print('+');
            System.out.print(".>");
        }
    }
}

সমান একক প্রোগ্রাম যা 138 বাইট দীর্ঘ:

interface a{static void main(String[]A){for(char b:A[0].toCharArray()){for(int B=b;B-->0;)System.out.print('+');System.out.print(".>");}}}

বোনাস:

interface a{static void main(String[]A){for(char b:new java.util.Scanner(new java.io.File(A[0])).useDelimiter("\\Z").next().toCharArray()){for(int B=b;B>0;B--)System.out.print('+');System.out.print(".>");}}}

এই 207-বাইট অ্যাপটি শিরোনামে যেমন বলা হয়েছে ঠিক তেমন একটি বিএফ প্রোগ্রাম হিসাবে একটি ফাইল এনকোড করে।


2
এটি কি কেবলমাত্র আমি বা অসমাপ্ত প্রোগ্রামটি যেভাবে ইন্ডেন্ট করা হয়েছে তা দুর্দান্ত দেখায়?
ব্যবহারকারী 8397947

আমার উত্তরটি মূলত আপনার একটি গল্ফড ডাউন সংস্করণ এটি পোস্ট করার আগেই উপলব্ধি করা হয়েছিল।
উন্মাদ

2

ভিটসি, 19 17 বাইট

I\[&'>.+'i1-\Du]Z

I                     Get the length of the input stack.
 \[            ]      Pop n, repeat this block of code n times.
   &                  Push a new stack and move to it.
    '>.+'             Push the string '+.>' to the stack.
         i            Pop an item from the input stack and push it to the current
                      program stack.
          1-          Subtract one from the top program stack item.
            \D        Duplicate the '+' in the stack that many times.
              u       Merge the current program stack with the previous.
                Z     Output the entire current stack as a string.

মনে রাখবেন যে এই উত্তরটি আমি যে কয়েকবার ব্যবহার করেছি Iএবং এর মধ্যে একটি u। : ডি

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


2

, 13 বাইট

i{'+n#*".>"}d

ব্যাখ্যা:

i              Read standard input into a string and push it onto the stack.
 {         }d  For each character in the string...
  '+           Push "+".
    n#         Convert the character (n) to its ASCII code.
      *        Multiply the "+" by the character code to get the number of +'s needed.
       ".>"    Push the string ".>".
               In O, the stack is printed after execution, so this prints out the result.

2

K6, 16 বাইট

,/{|">.",x#"+"}'

ব্যবহার

,/{|">.",x#"+"}'"some string"

ব্যাখ্যা

  {           }'  For each character in the string...
         x#"+"    Repeat "+" as many times as the character's ASCII code.
        ,         Combine that with...
    ">."          The code to print it and move on.
   |              But we put the string together backwards...so now it gets reversed.
,/                Combine all the substrings into one BIG string.

ব্যাখ্যা plz: ডি
অ্যাডিসন ক্র্যাম্প

@ ভিটিসিএকএভিএসমোসেক সম্পন্ন! :)
kirbyfan64sos

2

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

lambda s:''.join('+'*ord(c)+'.>'for c in s)

পাইথন প্রতিটি চরিত্রের ASCII কোডের সমতুল্য বেশ কয়েকটি প্লাস রাখে এবং তারপরে অনুসরণ করে .> এবং প্রিন্ট করে পরবর্তী কক্ষে চলে যায়। ব্রেইনফাকটি সঠিক মান, প্রিন্ট এবং পরবর্তী কক্ষে চলেছে incre

আউটপুট hi(স্পষ্টতার জন্য নতুন লাইনের সাথে):

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>

প্রোগ্রামটির ফলাফল:

hi

2

পার্ল, 25 বাইট

s/./"+"x ord($&).".>"/eg

ব্যবহার

echo -n hi | perl -pe 's/./"+"x ord($&).".>"/eg'

ব্যাখ্যা

স্ট্যান্ডার্ড ইনপুট দেওয়া প্রতিটি লাইনে প্রতিটি অক্ষরকে +সেই অক্ষরের অর্ডিনাল মান থেকে গণনা করা, তারপরে আউটপুটগুলিতে প্রতিস্থাপনের জন্য একটি নিয়মিত এক্সপ্রেশন প্রতিস্থাপন অপারেশন ব্যবহার করে.> মুদ্রণ এবং পরবর্তী অক্ষরটিতে অগ্রসর হওয়ার জন্য ।

-pইনপুটটি স্বয়ংক্রিয়ভাবে পড়তে এবং ফলাফল মুদ্রণ করতে পার্ল পতাকা ব্যবহার করে বাইটকাউন্টে 1 জন অতিরিক্ত যোগ করে।


2

জাভা, 91 বাইট

String b(char[] f){String k="";for(char b:f){for(int u=b;u>0;u--)k+="+";k+=".>";}return k;}

আমাকে মারধর করার জন্য ডরোকায়হানের কাছে প্রপসেস :)


আপনি কেবল বয়লারপ্লেটটি সরাতে পারবেন না এবং ভেরিয়েবলের সমস্ত নাম পরিবর্তন করতে পারবেন এবং তারপরে নতুন উত্তর হিসাবে দাবি করতে পারবেন।
ফাঁস নুন

@ লিক্যনুন আমি দিইনি, তবে আমি চাইলে পারতাম।
উন্মাদ

আপনি যে উত্তরটি যুক্ত করেছেন তার থেকে এই উত্তরটি কীভাবে আলাদা?
ফুটো নুন

@ লেকিউন ডাউনভোট এবং এগিয়ে যান
ইনসান

2

সি, 72 64 60 বাইট

main(c){for(;c=~getchar();)for(;printf(~c++?"+":".>")^2;);}

অবরুদ্ধ সংস্করণ:

main( c )
{
    for ( ; c = ~getchar( ); )
        for ( ; printf( ~c++ ? "+" : ".>" ) ^ 2; );
}

সংকলন এবং এর সাথে পরীক্ষা:
gcc -o bfcat bfcatgolf.c && cat 1.txt | ./bfcat > o.txt && beef o.txt

ফলাফল


cবিটওয়াইসের বিপরীতটি কেন getchar, বিশেষত যদি আপনি কেবল আবার উল্টোটি উল্টে দেন?
বিড়াল

@ কেট c = ~getchar( )0 এ মূল্যায়ন করে EOFc = ~getchar( )এবং ~c++কেবল চেয়ে খাটো ~( c = getchar( ) )এবংc--
Jacajack

2

সিজেম, 12 বাইট

প্রতিটি অক্ষরকে তার এএসসিআইআই মানতে রূপান্তর করে এবং বর্তমান কক্ষটি মুদ্রণের আগে সেই সংখ্যা দ্বারা বার বৃদ্ধি করে। আমাদের যেহেতু অসীম টেপ রয়েছে তাই আমরা প্রতিটি অক্ষর প্রক্রিয়া করার পরে ডানদিকে যেতে পারি।

q{i'+*'.'>}%

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


2

লুয়া, 67 66 61 বাইট

আর্গুমেন্টে প্রতিটি অক্ষরকে কেবল পুনরাবৃত্তি করুন এবং প্রতিটিটির জন্য একটি লাইন মুদ্রণ করুন n + এবং ASCII সারণীতে এই অক্ষরের মান .>কোথায় nরয়েছে তার পরে ।

জিএসবি সমাধানের জন্য 1 বাইট সংরক্ষণ করার জন্য মন্তব্যে @ লেকইনুনকে পরামর্শ হিসাবে গ্যা্যাম্যাচ ব্যবহার করুন

for c in(...):gmatch"."do print(("+"):rep(c:byte())..".>")end

জিএসব ব্যবহার করে ওল্ড সলিউশন

(...):gsub(".",function(c)print(c.rep("+",c:byte())..".>")end)

বয়স 67

(...):gsub(".",function(c)print(string.rep("+",c:byte())..".>")end)

এটি চালানোর জন্য, কেবল এটি ফাইল হিসাবে সংরক্ষণ করুন ( golf.luaউদাহরণস্বরূপ) এবং এটি দিয়ে চালান lua golf.lua "hi"। জন্য hi, এটি আউটপুট করা উচিত

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>

আমি এটি কীভাবে ব্যবহার করব? কেবল এটি আরপিএল এ আটকানো দেয় attempt to index a nil value, এবং f = ...একই function f ... endদেয় এবং দেয়unexpected symbol near ':'
বিড়াল

@ কেট এটি কেবল একটি ফাইলে সংরক্ষণ করুন এবং এটি চালান হিসাবে lua file.lua "argument", নির্দেশাবলী দেওয়ার জন্য পোস্টটি আপডেট করব।
কাটেনকিও

কিভাবে এটি কাজ করে? হয় ...argv হয় সাথে একটি শনাক্তকারী?
বিড়াল

1
@ কেট প্যাকযুক্ত ...টেবিলের মানগুলি অন্তর্ভুক্ত করে arg। যার অর্থ এটি সর্বদা সম্পর্কিত হবে arg[1]যদি না আপনি এটি সর্বশেষ পরামিতি হিসাবে কোনও ফাংশন কলে ব্যবহার না করেন তবে ব্যয় হবে then
কাটেনকিও

n=...for n:gmatch"."do print(("+"):rep(c:byte())..".>")end48 বাইটের জন্য
লিকি নুন

1

জে, 28 বাইট

[:;[:('.>',~'+'#~])"0[:]3&u:

যথেষ্ট সহজ। 3&u:চরগুলিকে চর কোডগুলিতে রূপান্তর করে। বাকিটি কেবল '+'সেই সংখ্যার বার পুনরাবৃত্তি করে , তারপরে .>প্রতিটি লাইনের শেষে যুক্ত করে এবং; ফলাফলকে সমতল করে।

কিছু ফলাফল

   bf =: [:;[:('>.',~'+'#~])"0[:]3&u:
   bf 'hi'
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>.
   bf ' !'
++++++++++++++++++++++++++++++++>. +++++++++++++++++++++++++++++++++>.
   bf ' ~'
++++++++++++++++++++++++++++++++>.
                 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>.


1

আসলে, 13 বাইট

O`'+*".>"@`MΣ

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

এখানে ব্যবহৃত কৌশলটি অন্যান্য সমাধানগুলির অনেকের মতোই - প্রতিটি চরিত্রের জন্য +যথাযথ ASCII অর্ডিনালে একটি শূন্য-আরম্ভকৃত সেল বৃদ্ধি করতে, এর সাথে আউটপুট তৈরি করে .এবং পরবর্তী কক্ষে নিয়ে যাওয়ার জন্য আউটপুট যথেষ্ট>

ব্যাখ্যা:

O`'+*".>"@`MΣ
O              list of ordinals (technically this is Unicode code points, but code points 0-127 are the same for Unicode and ASCII)
 `'+*".>"@`M   for each ordinal:
  '+*            push a string containing that many +s
     ".>"@       push ".>" and swap (putting it before the +s)
            Σ  concatenate all the strings (if "[", "]", and "," weren't meaningful characters in BF, this technically wouldn't be necessary)

1

মাউস -2002, 27 বাইট

(?'l:l.^(l.^"+"l.1-l:)".>")

এটি তত্ত্বের ভিত্তিতে এবং ভাষার ডকুমেন্টেশন অনুসারে কাজ করে তবে মাউসের ইন্টারপ্রেটারের রেফারেন্স প্রয়োগকরণে একটি বাগ রয়েছে বলে মনে হয় যেখানে স্ট্রিং ইনপুট একটি যুক্ত করে ', তাই aএই ফলাফলগুলির জন্য

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++.>

যা ঘুরে আউটপুট a'। এটি ঠিক আছে বা নাও হতে পারে, সুতরাং এখানে একটি 39 বাইট দীর্ঘ যা 'কখনও আউটপুট দেয় না এবং সম্ভবত এটি আরও অবৈধ।

(?'l:l.39=l.0=+0=^(l.0>^"+"l.1-l:)".>")

যা রেফারেন্স ইমপ্লিতে সঠিক আউটপুট দেয়। যতক্ষণ না আছে' এস আছে :)

ব্যাখ্যা:

(              ~ while (true) {
  ?' l:        ~   l = getchar() 
  l. ^         ~   if (! (l) ) { break }
  (            ~   while (true) {
    l. ^       ~     if (! (l) ) { break }
    "+"        ~     puts("+")
    l. 1 - l:  ~     l-- // l = l - 1
  )            ~   }
  ".>"         ~   puts(".>")
)              ~ }

1

ফ্যাক্টর, 58 বাইট

[ [ [ 43 ] ""replicate-as ".>"append ] { } map-as ""join ]

এর মতো কাজ করে:

[ 
  [ 
    [ 43 ] "" replicate-as  ! ``+'' * code point, clone-like a string ""
    ".>" append             ! append ".>"
  ] 
  { } map-as                ! for each char in string and clone-like an array { }
  "" join                   ! join array of str into str by ""
]

যেহেতু ফ্যাক্টর একটি ব্রেইনফাক দোভাষী নিয়ে আসে তাই এটি পরীক্ষা করা সহজ।

bfcat.factor

USING: sequences ;
IN: bfcat

: string>brainfuck ( s -- bf )
  [ [ 43 ] "" replicate-as ".>" append ]
  { } map-as "" join ;

bfcat-tests.factor

USING: tools.test bfcat brainfuck ;
IN: bfcat.tests

{ "a"  } [ "a"  string>brainfuck get-brainfuck ] unit-test
{ "ab" } [ "ab" string>brainfuck get-brainfuck ] unit-test
{ "+++++++++++++" } [ "+++++++++++++" string>brainfuck get-brainfuck ] unit-test
{ "Code Golf" } [ "Code Golf" string>brainfuck get-brainfuck ] unit-test

আউটপুট

Unit Test: { { "a" } [ "a" string>brainfuck get-brainfuck ] }
Unit Test: { { "ab" } [ "ab" string>brainfuck get-brainfuck ] }
Unit Test: {
    { "+++++++++++++" }
    [ "+++++++++++++" string>brainfuck get-brainfuck ]
}
Unit Test: {
    { "Code Golf" }
    [ "Code Golf" string>brainfuck get-brainfuck ]
}

হ্যাঁ! তারা সব পাস।


1

রুবি, 40 38 বাইট

gets.chop.each_byte{|o|puts"+"*o+".>"}

আমি রুবিকে জানি না তবে আমি জানি যে আপনি এর putsপরিবর্তে ব্যবহার করতে পারেন print, যতক্ষণ না আউটপুটটির ফর্ম্যাটটি ততক্ষণ তাৎপর্যপূর্ণ না যতক্ষণ না এটি বৈধ মস্তিষ্ক এবং ব্রেইনফাক অন্যান্য চরিত্রের যত্ন নেয় না
বিড়াল

@cat oh I didn't know that bf ignores other characters, thanks!
CocoaBean

1

Sidef, 38 bytes

Hey, the same length as Ruby! just that Sidef isn't Ruby :D

read().bytes.each{|c|say"+"*c;say".>"}

Read some chars, then for each byte do that thing.


1

GNU Bash, 100 85 bytes

while IFS= read -rn1 c;do printf '+%.0s' $(seq 1 $(printf %d \'$c));echo '.>';done<$1

Thanks @cat for saving me 15 bytes!

Postramble

  1. Assumes input string is represented as-is in a file passed as first argument.
  2. Usage: bash bfcat.sh <path to file containing string>
  3. Usage (with named pipe): bash bfcat.sh <(echo -n '<string>')

Ungolfed

while IFS= read -r -n1 c # Read file byte by byte [1]
do
    n=$(printf "%d" \'"$c") # `ord` of a char in bash [2]
    printf '+%.0s' $(seq 1 $n) # emit character $n times [3]
    echo '.>' # Emit output and shift command for bf. I love infinite memory.
done <"$1"

References in Ungolfed version

  1. Read file byte by byte

  2. ord of a char in bash

  3. emit character $n times


1
I've improved some of the formatting and stuff in your answer, and removed redundant information from the links. Feel free to undo it if you don't like it. Also, it's GNU Bash, not GNU/Bash like GNU/Linux. :)
cat

1
Golfing tips (I'm no bash golfer): read -rn1, get rid of spaces after ;, get rid of the space in done <"$1" to save a total of 9 bytes
cat

1
@cat It looks awesome! I really need to get in the habit of edit->preview->edit->...
Yeow_Meng

1

ES6, 119 115 bytes

f=s=>{a='';for(i in[...s]){b=s[c='charCodeAt'](i)-(s[c](i-1)|0);a+=(b>0?'+'.repeat(b):'-'.repeat(-b))+'.'}return a}

Saved 4 bytes, thanks to @Leibrug


1
You can assign charCodeAt to some var (let's say c) and use like that: s[c](i) to shorten by 1 byte, and also remove some characters (i found 3: space before [...s], replace logical OR with bitwise one, and semicolon before return).
Leibrug

1

Sesos (non-competing)

Hexdump:

0000000: 28cbf6 02e83d 655bae 243901                       (....=e[.$9.

Size   : 12 byte(s)

Try it online!

Assembler

add 43,fwd 1,get
jmp
  jmp,sub 1,rwd 1,put,fwd 1,jnz
  add 46,put,add 16,put
  get

0

Ruby, 26 bytes

gsub(/./){?+*$&.ord+'.>'}

+ 1 byte for the p command line option. To e.g get the brainfuck code for ABC xyz you can run

$ ruby -p -e 'gsub(/./){?+*$&.ord+".>"}' <<< "ABC xyz"

and get

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>

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