বর্ধিত সত্যের মেশিন


17

প্রোগ্রামিংয়ে সত্যের মেশিনটি কী তা অনেকেই জানেন । কিন্তু সময় কি আমরা জিনিসগুলিকে একটি খাঁজ কাটা। পরিচয় করিয়ে দেওয়া, বর্ধিত সত্যের মেশিন! একটি বর্ধিত ট্রুথ মেশিন দুটি জিনিস ইনপুট হিসাবে গ্রহণ করে, একটি পূর্ণসংখ্যা nএবং একটি দুর্দান্ত স্ট্রিং s। এটি s nalচ্ছিক পেছনের সাদা স্থানের সাথে সময়ের আউটপুট দেয় । তবে, nসমান হলে 0, sপ্রোগ্রামটি ম্যানুয়ালি বন্ধ না হওয়া পর্যন্ত আপনাকে অবশ্যই আউটপুট দিতে হবে অর্থাৎ এটি কখনই শেষ করা উচিত নয়।

এছাড়াও, যদি naণাত্মক সংখ্যা হয় তবে স্ট্রিংটি বিপরীত করা দরকার। উদাহরণস্বরূপ s=helloএবং সাথে n=-1, আউটপুট হবে olleh

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

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

n, s, output

5, "hello world", "hello worldhello worldhello worldhello worldhello world"
0, "PPCG", "PPCGPPCGPPCGPPCG..."
-2, "truThY", "YhTurtYhTurt"
2000, "o", "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"

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

এখানে আসল স্যান্ডবক্স পোস্ট। এটি সম্পাদনা করা হয়েছে। এই চ্যালেঞ্জটির ধারণা তৈরি করার জন্য @ কমরেডস্পার্কলপনিতে ধন্যবাদ Thanks

উত্তর:


3

হাস্কেল, 57 54 বাইট

f 0=cycle
f n|n<0=f(-n).reverse|n>0=concat.replicate n

ব্যাখ্যা:

f 0           -- If n=0 ..
 =cycle       -- infinitely repeat the input
f n|n<0       -- Otherwise, if n<0 ..
 =f(-n)       -- call f with the negative of n ..
 .reverse     -- and the reverse of the input
 |n>0         -- Finally, if n>0 ..
 concat       -- concatenate the result of ..
 .replicate n -- repeating the input n times

-3 বাইট @nimi ধন্যবাদ


আপনি -nপরিবর্তে ব্যবহার করতে পারেন abs n
নিমি


2

এমএটিএল , 37 বাইট

jXJiXI0=?`1wtwDw]}I0>?I:"t]x}PI|:"t]x

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

ব্যাখ্যা:

j            % input string
XJ           % copy to clipboard J
i            % input
XI           % copy to clipboard I
0            % number literal
=            % is equal? (element-wise, singleton expansion)
?            % if
  `          % do...while
    1        % number literal
    w        % swap elements in stack
    t        % duplicate elements
    w        % swap elements in stack
    D        % convert to string and display / string representation
    w        % swap elements in stack
  ]          % end
}            % else
  I          % paste from clipboard I
  0          % number literal
  >          % is greater than? (element-wise, singleton expansion)
  ?          % if
    I        % paste from clipboard I
    :        % range; vector of equally spaced values
    "        % for
      t      % duplicate elements
    ]        % end
    x        % delete
  }          % else
    P        % flip the order of elements
    I        % paste from clipboard I
    |        % absolute value / norm / determinant
    :        % range; vector of equally spaced values
    "        % for
      t      % duplicate elements
    ]        % end
    x        % delete
             % (implicit) end
             % (implicit) end
             % (implicit) convert to string and display

1

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

def f(n,s,k=1):
 if n<0:s=s[::-1];n=-n
 while n|k:print(end=s);n-=1;k=0

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

পরিবর্তনশীল kলুপটি সর্বদা কমপক্ষে একবার চালানোর গ্যারান্টি দেয়। এর অর্থ হ'ল যদি n=0, তবে nলুপটির পরবর্তী পুনরাবৃত্তিতে নেতিবাচক হবে, সুতরাং লুপটি চিরতরে চালানো থাকবে।


1

মতলব, 87 বাইট

n=input('')
s=input('','s')
a=repmat(s,1,abs(n))
while~n s=[s s]
end
if n<0,flip(a)
end

কোড-গল্ফে আমার প্রথম প্রচেষ্টা! গল্ফ করার জন্য যে কোনও পরামর্শই স্বাগত।


সাইটে স্বাগতম! :)
ডিজেএমসিএমহেম

1

05 এ বি 1 , 17 16 14 বাইট

0‹iR}¹Ä×¹_i[²?

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

ব্যাখ্যা:

0‹iR}¹Ä×¹_i[²?
0‹             Is the input negative?
  iR}          If so, reverse the second input.
     ¹Ä        Get the absolute value of the first input.
       ×       Repeat the string that many times.
        ¹_     Boolean NOT the first input. (Is the first input 0?)
          i    If so...
           [   Do forever...
            ²? Print the second input without a newline.

2 বাইট সংরক্ষিত হয়েছে @ এরিকথ আউটগল্ফারকে ধন্যবাদ


আপনি প্রতিস্থাপন করতে পারেন '-åসঙ্গে 0‹এবং 0Qসঙ্গে _
এরিক আউটগলফার

@ এরিকথ আউটগলফার ধন্যবাদ, সম্পাদিত।
কমরেড স্পার্কলপনি

1

কিউবিক্স , ৪১ চল্লিশটি 45 বাইট

হিসাবে ইনপুট লাগে <N> <String>

.uq.sB.p$IA;p?;ouu(..!q/o()uq?..@<w?q<<_)

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

Cubified:

      . u q
      . s B
      . p $
I A ; p ? ; o u u ( . .
! q / o ( ) u q ? . . @
< w ? q < < _ ) . . . .
      . . .
      . . .
      . . .

এটি চলমান দেখুন

কোডটিতে এখনও প্রচুর পরিমাণে অপ্স নেই যা আমি আরও কয়েকটি বাইট বের করতে সক্ষম হতে পারি, তবে আমি এটি ভেঙে ফেলার আগে এটি পেতে চেয়েছিলাম।

বেসিক পদ্ধতিটি হ'ল

  • I ইনপুট থেকে কাউন্টার পান
  • A অক্ষরের হিসাবে বাকী ইনপুট নিন
  • ;p? স্থানটি সরিয়ে ফেলুন, সংখ্যাটি আনুন এবং এটি পরীক্ষা করুন
    • psuqB$)যদি কাউন্টারটি নেতিবাচক হয় তবে স্ট্যাকটি বিপরীত করুন। এর মধ্যে ইনপুট নম্বর এবং ইওআই চিহ্নিতকারী (-1) পরিচালনা করা জড়িত। কাউন্টার বাড়িয়ে দিন।
    • ;p;ouqu যদি কাউন্টার শূন্য হয় তবে কাউন্টার এবং EOI চিহ্নিতকারীটি সরিয়ে দিন এবং চিরস্থায়ী আউটপুট লুপ শুরু করুন।
    • ( যদি ইতিবাচক হ্রাস কাউন্টার
  • <<q?/o()uআউটপুট লুপ। এটি EOI চিহ্নিতকারী (-1) না হওয়া পর্যন্ত স্ট্যাকের প্রতিটি অক্ষরকে আউটপুট দেবে।
  • ... _ ... ?wq!শেষে EOI চিহ্নিতকারী, ঘনক্ষেত্রের কাছাকাছি যান এবং ফিরে প্রতিফলিত করুন ?, গলি পরিবর্তন করুন , EOI চিহ্নিতকারীটিকে নীচে ছেড়ে দিন এবং কাউন্টারটি পরীক্ষা করুন।
  • @ যদি শূন্য হয়, থাম
  • ?u( যদি ইতিবাচক ইউ-টার্ন এবং হ্রাস হয় তবে লুপের শুরুতে আঘাত শেষ হবে
  • ? ... <) যদি নেতিবাচক হয়, ঘনক্ষেত্রটিকে অন্যের দিকে ঘুরে দেখুন, ইনক্রিমেন্টের পাশ দিয়ে যাওয়ার সময় লুপের শুরুতে পুনর্নির্দেশ করুন।
  • /)< যদি নেতিবাচক বৃদ্ধি হয় এবং আউটপুট লুপ চালিয়ে যায়

স্ট্রিংটি একটি সংখ্যার সাথে শুরু হলে এটি কাজ করতে ব্যর্থ হয় না?
ধ্বংসাত্মক লেবু

@ ডিসট্রিকটিবললিমন ঠিক করা হয়েছে
মিকিটি

0

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

 f=(n,s)=>n<0?f(-n,[...s].reverse().join``):(alert(!n?s:s.repeat(n)),!n&&f(n,s))

স্নিপেট:

f=(n,s)=>n<0?f(-n,[...s].reverse().join``):(alert(!n?s:s.repeat(n)),!n&&f(n,s))

f(5, "hello world")
//f(0, "PPCG")  //uncomment this at your peril!!!
f(-2, "truThY")
f(2000, "o")


আমি এই জাতীয় কিছু পুনরাবৃত্ত করার চেষ্টা করছিলাম, তবে আমি !n&&অসীম লুপিংয়ের জন্য ভাবি নি । তবে, এটি কি শেষ পর্যন্ত কোনও স্ট্যাকওভারফ্লোতে আঘাত করবে? it should never terminate.
স্টিফেন

এটি বার বার স্ট্রিং পিপিসিজিকে সতর্ক করবে। ক্রোমে (অন্তত), এটি বন্ধ করতে আমাকে ব্রাউজারটি মারতে হবে।
রিক হিচকক

আমি আপনার বক্তব্য বুঝতে পারি। আমি মনে করি যে আমার কোডগুলি এটি সমর্থন করে এমন ব্রাউজারগুলিতে টেল কল পুনরাবৃত্তি অপ্টিমাইজেশানের সুবিধা নেবে।
রিক হিচকক

এটি কনসোল.লগ দিয়ে পরীক্ষা করুন। আমি একটি ত্রুটি পেয়েছি।
স্টিফেন

হুম, আপনি একেবারে সঠিক: (
রিক হিচকক

0

জাভাস্ক্রিপ্ট (ES6), 98 94 91 83 বাইট

n=>s=>{s=n<0?[...s].reverse().join``:s;while(!n)l(s);l(s.repeat(n<0?-n:n))}

-4, -5 বাইট ধন্যবাদ অর্জুনকে

-3 বাইট ধন্যবাদ রিক হিচককের জন্য

জাভা উত্তরের চেয়ে আলাদা শুরু হয়েছিল , তবে গল্ফ করার পরে খুব একইরকম হয়ে ওঠে। সতর্কতা অসীম তবে আপনি যদি এটি দেখতে সুন্দর দেখতে চান তবে স্যুইচ করুন console.logl=alert;এবং লেখালেখি alertসমান দৈর্ঘ্য, তবে আপনি যদি console.logএটির পরিবর্তে আরও সংক্ষিপ্ত করে পরিবর্তন করেন।


1
while(!n)l(s)পরিবর্তে if(!n)for(;;)l(s)
অর্জুন

2
[...s].reverse()পরিবর্তেs.split''.reverse()
রিক হিচকক

@ রিকহিচকক আমি সর্বদা সে সম্পর্কে ভুলে যাই :(
স্টিফেন

l(s.repeat(Math.abs(n)))forশেষ পর্যন্ত লুপ পরিবর্তে ।
অর্জুন

0

কিউবিআইসি , 36 বাইট

এখানে প্রচুর ঝাঁকুনি পড়েছে এবং কিউবিআইসি / কিউবিসিকের ঠিক এই জাতীয় শর্তগুলি মার্জিতভাবে মোকাবেলা করার সিনট্যাক্সটি নেই।

~:<0|;=_fA}[abs(a)|Z=Z+A]~a|_X}{?A';

ব্যাখ্যা:

~:<0|       IF cmd line arg 'a' is negative
  ;=_fA         Make cmd line arg A$ into its reverse
}           Close the IF (this eliminates the need for a | fuction terminator on _f)
[abs(a)|    FOR b = 1 to (abs(a) (hammering out negatives)
  Z=Z+A         Add A$ to Z$ (on exit, Z$ is printed explicitly)
]           NEXT
~a|_X       IF a is non-zero, terminate the program
}           END IF
{?A';       If we're here, just start a DO-loop and keep on printing the input.

0

জাভা (ওপেনজেডিকে 8) , 137 বাইট

void f(String[] a){for(long n=Long.valueOf(a[0]),i=0;n==0|i++<Math.abs(n);)System.out.print(n<0?new StringBuilder(a[1]).reverse():a[1]);}

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


এটি সম্পূর্ণ প্রোগ্রামের চেয়ে স্নিপেটের মতো দেখায়, যা সম্প্রদায়ের sens কমত্য দ্বারা অনুমোদিত নয় ।
এএসল্যাং ফল

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

0

str , 30 বাইট

I#Lbd0<[_u_][d0='e'u#?]#?xo;db

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

ব্যাখ্যা

I#Lbd0<[_u_][d0='e'u#?]#?xo;db
...........................;      preamble
I                                 read number
 #L                               read rest of STDIN
   b                              buffer the STDIN
    d                             duplicate number
     0<[   ]           #?         if the number is less than zero
        _                         negate that number
         u_                       and reverse STDIN from buffer
            [         ]           otherwise
             d0='e  #?            if its 0, push the empty string
                  'u              otherwise, push the unbuffered STDIN untouched
                         x        repeat STDIN by the TOS
                          o       and output
                           ;..    main program (only activates when input = 0)
                            d     duplicate the implicitly unbuffered STDIN
                             b    and rebuffer it
                                  implicitly displayed

0

সি (জিসিসি) , 115 112 109 107 104 বাইট

f(n,s,l,p,d)char*s;{d=n<0?-1:1;do for(l=1,p=0;p>=0;p+=l)s[p]?d==l&&putchar(s[p]):l--;while(!n||(n-=d));}

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

কে বলেছে, আমাদের দরকার strlen ?

সি (জিসিসি) , 115 বাইট (134 সহ)#include<string.h> সামনে )

#include<string.h>
f(n,s)char*s;{int l=strlen(s),d=n<0?0:2,m=d--,p;do for(p=m?0:l-1;p!=(m?l:-1);p+=d)putchar(s[p]);while(!n||(n-=d));}

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

#include<string.h>আমরা ছাড়া strlenযে রিটার্ন জন্য একটি অন্তর্নিহিত প্রোটোটাইপ পেতে int, কিন্তু strlenহয়size_t (কমপক্ষে আজকাল, কে & আর বা সি 98 সম্পর্কে পুরোপুরি নিশ্চিত নয় তবে আমি বিশ্বাস করি, এটি ফিরে এসেছেint পুরানো সময়ে )।

অনুপস্থিতি #include <stdio.h>কোনও সমস্যা নয়, কারণ পূর্ণসংখ্যার প্রচারের কারণে, ডিফল্ট প্রোটোটাইপটি int putchar(int)হ'ল যা আমরা চাই।


0

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

/¶-/&V`^.+
/¶0/&//+>G0`
~`(.+)¶-*(\d+)
.-$2+>K`$1

ইনপুট ফর্ম্যাট: স্ট্রিংটি নেয়, তার পরে একটি নতুন লাইন, তার পরে নম্বর।

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

ব্যাখ্যা:

/¶-/&V`^.+

/¶-/&এই লাইন শুধুমাত্র যদি সংখ্যা নেতিবাচক চালায়। Vবিপরীত পর্যায়, এবং এটি বিপরীত হয় ^.+, যা স্ট্রিংয়ের সাথে .মেলে ( নিউলাইনগুলি বাদে প্রতিটি চরিত্রের সাথে মেলে)।

/¶0/&//+>G0`

কেবল /¶0/&এই সংখ্যাটি 0 হলে এই লাইনটি চালায় //+>একটি অসীম লুপ শুরু হয় যা প্রতিটি পুনরাবৃত্তির পরে কাজের স্ট্রিংটি মুদ্রণ করে। G0স্ট্রিং নেয় এবং সংখ্যাটি বাতিল করে দেয়; এটি প্রতিবার মুদ্রণ করে অসীমভাবে এটি করে।

~`...

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

(.+)¶-*(\d+)
.-$2+>K`$1

(.+)¶-*(\d+)পুরো STRING এবং রাখে গ্রুপ 1 ধরে রাখার ব্যাপারে স্ট্রিং এবং গ্রুপ 2. ধরে রাখার ব্যাপারে সংখ্যার সাথে মেলে .-$2+>K` $1অক্ষিপট কোড চালানো যাবে উত্পন্ন: . বন্ধ (অন্যথায় স্ট্রিং প্রিন্ট করা হবে এন + 1 টি বার) অন্তর্নিহিত আউটপুট যায়, -$2+একটি পুনরাবৃত্ত লুপ সেট করে যা {গ্রুপ 2 ক্যাপচারের জন্য পুনরাবৃত্তি করে। শুরুর দিকে বিয়োগটি সংখ্যাটিকে একটি negativeণাত্মক সংখ্যায় পরিণত করে, কারণ এটি লুপের রূপান্তর কার্যকারিতা অক্ষম করে, যা এটি 1 ম পুনরাবৃত্তির পরে থামবে।>প্রতিটি পুনরাবৃত্তির পরে মুদ্রণের জন্য এই লুপটি সেট করে। বাকি কোডটি কেবল স্ট্রিং প্রিন্ট করার জন্য।


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