কোড গল্ফ: ফরোয়ার্ডে sdrawkcaB sdrawkcaB ফরোয়ার্ডে sdrawkcaB


14

কার্য

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

সাধারণ - বিপরীত - বিপরীত - সাধারণ - সাধারণ - বিপরীত - বিপরীত - সাধারণ ...

ইনপুট উদাহরণ

তিনি সমুদ্রের তীরে সমুদ্র শেল বিক্রি করেন

আউটপুট উদাহরণ

তিনি এহটি এএসএস উপকূলে শপ স্লাইস করেন

অতিরিক্ত বিধি

  • বড় হাতের অক্ষর ব্যবহার করা হলে, তারা যে চিঠিতে মূলত পোস্ট করা হয়েছিল সেগুলি থাকা উচিত।
  • প্রাথমিকভাবে ইনপুটটিতে পোস্ট করা যে কোনও একাধিক স্পেসকে একটি জায়গায় হ্রাস করতে হবে। উদাহরণস্বরূপ Programming Puzzles and Code Golfহয়ে যায়Programming selzzuP dna Code Golf

সংক্ষিপ্ততম কোড জয় !!

শুভ কোডিং ...


8
অনেক প্রোগ্রামিং ভাষার ব্যতিক্রম নেই ex
ডুরকনব

15
@ নিমি এমন তুচ্ছ কারণগুলির জন্য ভাষার একটি ক্ষুদ্র উপসেটে চ্যালেঞ্জকে সীমাবদ্ধ করা সম্পূর্ণ অপ্রয়োজনীয় বলে মনে হয়।
ডুরকনব

10
এই অন্যথায়-ভাল চ্যালেঞ্জটি নিয়মের দ্বারা নষ্ট হয়ে গেছে এর Any input other than letters or spaces, including integers and punctuation, should throw an exception: "Sentence must only use letters".অর্থ হ'ল শব্দগুলির বিপরীত চ্যালেঞ্জের সাথে সম্পূর্ণভাবে সম্পর্কিত নয় একটি মাধ্যমিক কাজটি বাস্তবায়ন করা, ব্যতিক্রম নেই এমন ভাষাগুলি কেটে ফেলে, এবং হার্ডকোডিং বা দীর্ঘ স্ট্রিং সংক্ষেপণের প্রয়োজন যা প্রচুর পরিমাণে গ্রহণ করে বাইট গণনা
xnor

2
@ বেলফিল্ড হ্যাঁ, আমি আপনার বাঁধাই দেখতে পাচ্ছি। আমার ধারণা আপনি এখনই কিছু করতে পারবেন না। ভবিষ্যতে পোস্ট দেওয়ার আগে প্রতিক্রিয়া জানতে স্যান্ডবক্সে পোস্ট করার চেষ্টা করুন ।
xnor

3
@ বেলফিল্ড একটি ভাল চ্যালেঞ্জ একটি ভাল উত্তরের চেয়ে অনেক বেশি কঠিন। আমি এটিকে যাইহোক উপভোগ করেছি এবং পরের দিনটি আরও ভাল।
edc65

উত্তর:


15

টিস্ক্রিপ্ট , 55 বাইট 58 60 69 76 78 80 87 89

xO`a-z `?xl(#~-i&2?l:lv(),/ +/):Ld`SÀZn­ Û § «e Ò5s`

এটি অত্যন্ত সংক্ষিপ্ত, আমি এতে খুব খুশি।

শেষ ~ 20 টি অক্ষর জিব্বার মত মনে হতে পারে তবে এটি "বাক্যটি কেবল অক্ষর ব্যবহার করতে হবে" এনকোডযুক্ত। সমস্ত অক্ষরের 256 এর নিচে চর কোড রয়েছে তাই প্রতিটি বাইট হয়

ব্যাখ্যা

xO`a-z `?  // If input contains only a-z and space...

   xl(#       // Loop through input 
      ~-i&2?  // If (index - 1 "unary and"ed with 2) isn't 0...
          :l,     // Leave alone
          lv()    // Otherwise, reverse string
       / +/ // Loops on spaces
   )

:Ld`SÀZn­ Û § «e Ò5s` // Otherwise... decompress and print  the error string

পরীক্ষা পোস্ট করার জন্য ধন্যবাদ - খুব সুন্দর। যখন ত্রুটিটি আসে তখন প্রত্যেকে একই নৌকায় থাকে - কোনও লাইন গল্ফ করছে না
বেলফিল্ড

আজব, এখন এটি ফায়ারফক্সে কাজ করে। তবে আমি ফায়ারফক্সও আগে ব্যবহার করেছি।
জাকুব

এখন পর্যন্ত সেরা উত্তর!
বেলফিল্ড

কি? তুমি পাইথকে মারছো ?! জেএস ভিত্তিক কোন ভাষা নিয়ে?!?! এটা কীভাবে সম্ভব?!?!
ইটিএইচ প্রডাকশনস

2
@ এথ প্রডাকশনগুলি ডেনিস প্রতিযোগিতা না করা পর্যন্ত আপনি সর্বদা জিততে পারবেন: পি
ডাউনওয়েট

4

হাস্কেল, 141 বাইট

r=reverse
f x|all(`elem`(' ':['a'..'z']++['A'..'Z']))x=unwords$zipWith($)(cycle[id,r,r,id])$words x|1<2=error"Sentence must only use letters"

কোডের প্রায় 2/3 ত্রুটি পরীক্ষার জন্য for প্রথম আসল বিশ্ব চ্যালেঞ্জ বলে মনে হচ্ছে।

কাজটি সম্পন্ন করেছেন unwords$zipWith($)(cycle[id,reverse,reverse,id])$words x যার মাধ্যমে শব্দগুলির তালিকায় ইনপুটটি বিভক্ত হয়, ফাংশনগুলির সাইক্লিং তালিকার সাথে এটি জিপ করে [id,reverse,reverse,id,id,reverse...]এবং ফলাফলটি একক স্ট্রিংয়ে ফিরে ফাঁকা স্থানের সাথে যোগ দেয়।

@ ক্রিশ্চিয়ান ইরওয়ানকে 2 বাইটের জন্য ধন্যবাদ


"বাক্যটিতে কেবল ব্যবহারকারীর অক্ষর আবশ্যক" তে "বাক্যটি কেবল অক্ষর ব্যবহার করতে হবে" - এ ত্রুটিতে আমার খারাপ!
বেলফিল্ড

@ বেলফিল্ড: স্থির
নিমিম

না কেন r=reverse?
আকাংকা

@ খ্রিস্টিয়ান ইরওয়ান: ধন্যবাদ! (প্রারম্ভিক সংস্করণে আমার নাম ব্যতীত পয়েন্টফ্রি ফাংশন ছিল, সুতরাং দু'বার ব্যবহার করে reverseএবং r=reverseএকই দৈর্ঘ্য ছিল, নিখোঁজ হওয়ার কারণে f=non পয়েন্টফ্রি-তে না যাওয়ার সময় আবার পরীক্ষা করে দেখিনি)।
নিমি

3

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

f=s=>/[^a-z ]/i.test(s)?"Sentence must only use letters":s.split(/ +/).map((w,i)=>~-i&2?w:[...w].reverse().join``).join` `

alert(f(prompt('?','She sells Sea shells on the Sea shore')))


যখন ইনপুটে একটি newline আছে, এটি একটি ত্রুটির আউটপুট, উদাহরণস্বরূপ আমি এই মনে করি না থেকে ঘটতে অনুমিত হয়
Downgoat

1
@ Vɪʜᴀɴ এটি মুশকিল, উদাহরণটি একাধিক স্পেস সম্পর্কে, তবে তারপরে কোনও একাধিক স্পেস নেই - মাত্র 1 নিউলাইন। আমার মনে হয় এটি এসও সম্পাদক দ্বারা ম্যাঙ্গেল করা হয়েছিল। যদি আমাদের নিউলাইন এবং অন্যান্য জেনেরিক স্থান পরিচালনা করতে হয়, বাইট গণনা 2
edc65

2

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

\s+

(?<=^\S+ (\S+ )?((\S+ ){4})*)
;
+`(;\S*)(\S)
$2$1
;

i`.*[^a-z ].*
Sentence must only use letters

দ্বিতীয় লাইনে একটি একক স্থান থাকা উচিত যা এসই মনে হচ্ছে গ্রাস করছে। -sপতাকা সহ একটি ফাইল থেকে কোড চালান

রেটিনার ব্যাতিক্রমের কোনও ধারণা নেই তাই Sentence must only use lettersইনপুটটিতে অক্ষরবিহীন শ্বেতস্পেস অক্ষর থাকলে আউটপুটটি কেবলমাত্র এটি দ্বারা প্রতিস্থাপন করা হয় ।



2

পাইথন, 163 160 157 145

k=raw_input()
k=["Sentence tsum ylno use letters",k][k.replace(' ','').isalpha()]
for i,x in enumerate(k.split()):print x[::-1if(i+1)/2%2else 1],

15 টি অক্ষর সরানো হয়েছে, ধন্যবাদ মেগো !!


হ্যাঁ, ভীত নিমের একটা কথা আছে ...
বেলফিল্ড

গুলি করো, আমি এটা মিস করেছি আমি এটি সংশোধন করব।
আমেরিকার হরিণবিশেষ

@ মেগো, পুনরায় অনুসন্ধান ফলাফলটি পাওয়া না গেলে আর কিছুই নেই (যা সূচক হিসাবে ব্যবহার করা যায় না) এবং "! = কিছুই নয়" যুক্ত করা আসলে আমার মূল পদ্ধতির চেয়ে এক বাইট দীর্ঘ। যদিও শেষ দুটি লাইনে মার্জ করে 3 বাইট সংরক্ষণ করেছি। ধন্যবাদ!
আমেরিকার হরিণবিশেষ

1

বাশ + কোর্টিলস, 108

[ ${@//[a-zA-Z]/} ]&&echo Sentence must only use letters||for t;{
((++i/2%2))&&rev<<<$t||echo $t
}|tr \\n \ 

এই প্রোগ্রামের শেষ চরিত্রটি একটি স্থান।

কমান্ড লাইন থেকে ইনপুট নেওয়া হয়:

$ ./norrevvevnor.sh Programming Puzzles and Code$'\n' Golf
Programming selzzuP dna Code Golf $ 
$ ./norrevvevnor.sh Programming Puzzles and Code$'\n' Golf1
Sentence must only use letters
$ 

1

পাইথ, 72

=zflTc?:z"[^A-Za-z ]"0"Sentence tsum ylno use letters"zdjd.e?%/hk2 2_bbz

অন্য পাইথ উত্তরটি মারবে না, তবে আমি এটি লেখার জন্য ইতিমধ্যে সময় বিনিয়োগ করেছি। এটি মূলত আমার পাইথন উত্তরের একটি অনুবাদ ।

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


1

জুলিয়া, 109 বাইট

s->(i=0;join([isalpha(w)?(i+=1)%4>1?reverse(w):w:error("Sentence must only use letters")for w=split(s)]," "))

i=0এবং (i+=1)%4>1প্রতিটি শব্দ reversed হয় কি না তা সিদ্ধান্ত নিতে ব্যবহৃত হয় । অক্ষর নয় এমন অক্ষর রয়েছে কিনা তা নির্ধারণ isalphaকরার split(s)জন্য বিভক্ত হওয়ার পরে শব্দের ক্ষেত্রে প্রয়োগ হয় (স্পেসটি ইতিমধ্যে এই পয়েন্ট দ্বারা সরানো হয়েছে)। joinহেরফেরের পরে স্ট্রিংটি পুনরুদ্ধার করে, যদি না errorফেলে দেওয়া হয়।


1

জুলিয়া, 150 134 বাইট

s->ismatch(r"[^a-z ]"i,s)?error("Sentence must only use letters"):(i=3;join([(i+=1;isodd((i+1)i÷2)?reverse(w):w)for w=split(s)]," "))

Ungolfed:

function f(s::AbstractString)
    if ismatch(r"[^a-z ]"i, s)
        error("Sentence must only use letters")
    else
        i = 3
        a = [(i += 3; isodd((i + 1)i ÷ 2) ? reverse(w) : w) for w = split(s)]
        return join(a, " ")
    end
end

গ্লেন ওকে 16 বাইট সংরক্ষণ করা হয়েছে!


অন্য কিছুর আগে, আমি কি প্রাথমিক শর্তসাপকের যুক্তিটিকে বিপরীত করে rএর ফলাফল হিসাবে নির্ধারিত করার পরামর্শ দেব ? এটি হ'ল r=ismatch(...)||error(...)- কয়েকটি অক্ষর শেভ করবে এবং শর্তযুক্ত যেগুলি ব্যবহার করবে তা বিপরীত করবে r। আমি আবার সন্দেহ করি, আরও কিছু সঞ্চয় দিয়ে আবার মন্তব্য করব
গ্লেন ও

গৌণ সংশোধন - আমাকে ||প্রত্যাখ্যানের সাথে মোকাবিলা করতে হয়েছিল, তখন বুঝতে পেরেছি যে প্রত্যাখ্যানের প্রয়োজন নেই। এটিকে আবার ফিরিয়ে দিন &&। এবং আরও ভাল, ?:এটি আরও ভাল করার পরিবর্তে ব্যবহার করুন। s->(r=ismatch(r"[^a-z ]"i,s))?error("Sentence must only use letters"):join([(iseven(i)&&(r=!r);r?reverse(w):w)for(i,w)=enumerate(split(s))]," ")144 বাইট জন্য। এবং আমি মনে করি আমি আরও ভাল করতে পারি join...
গ্লেন ও

এখানে আপনার সমাধানের একটি প্রবাহিত সংস্করণ রয়েছে 134 বাইট সহ:s->ismatch(r"[^a-z ]"i,s)?error("Sentence must only use letters"):(i=3;join([(i+=1;isodd((i+1)i÷2)?reverse(w):w)for w=split(s)]," "))
গ্লেন ও

@ গ্লেএনও দুর্দান্ত পরামর্শ, ধন্যবাদ!
অ্যালেক্স এ।

0

পাইথ, 55 বাইট

?--rz0Gd"Sentence must only use letters"jd.e_W%%k4 3bcz

%%k4 3Pietu1998 থেকে বিট ধার নিয়েছে। একটি অতিরিক্ত বাইট সংরক্ষণ করা হয়েছে।

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

ব্যাখ্যা

?--rz0Gd"..."jd.e_W%%k4 3bcz   implicit: z = input string
   rz0                         convert z to lower-case
  -   G                        remove all letters
 -     d                       remove all spaces
?                              if there is some chars left than
        "..."                    print the string "Sentence must only ..."
                               else:
                          cz     split z by spaces or multiple spaces
               .e                map each pair (k index, b string) of ^ to: 
                 _       b          b or reversed of b, depending on
                  W%%k4 3           (k mod 4) mod 3
             jd                  join the result by spaces


0

জাভা, 215 বাইট

রেজেক্স মজা

s->{if(s.split("[^a-zA-Z ]").length>1)throw new Error("Sentence must only contains letters");else{int i=1;for(String a:s.split(" "))System.out.print((i++%2<1?new StringBuffer(a).reverse():a)+(a.isEmpty()?"":" "));}}

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


আপনার আউটপুট বর্তমানে সঠিক নয়। আপনি এখন আউটপুট She slles aeS shells no the aeS shore, তবে এটি She slles aeS shells on eht aeS shoreপরিবর্তে হওয়া উচিত (প্রথম স্বাভাবিক; তারপরে 2 টি বিপরীত বা না জোড়া জোড়া)। দুটি ইস্যু এর কারণ। iকোনও আইটেম খালি থাকলেও আপনি এখন বাড়িয়ে তোলেন এবং পরিবর্তে i++%2<1হওয়া উচিত i++%4>1এখানে একটি স্থির 211 বাইট সংস্করণ।
কেভিন ক্রুইজসেন 12

এই @KevinCruijssen আমি সাবধানে যথেষ্ট পড়া না করার জন্য কি পেতে হয়
বেঞ্জামিন Urquhart

0

জেলি , 39 বাইট

³Ḳ¹ƇUJ2&TƲ¦K
“*[,ṛDṾȧƤ°Ġṛ©¦»
ØẠ” ṭ³eƇ⁼£

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

এরিক দ্য আউটগোল্ফারকে ধন্যবাদ। তিনি আমাকে কয়েকটি অতিরিক্ত বাইট এবং বহু ঘন্টা হতাশার হাত থেকে বাঁচিয়েছিলেন।

এখানে একটি 46 বাইট সমাধান

ইনপুটটিতে অবৈধ অক্ষর থাকলে এটি আসলে পাইথন সিনট্যাক্স ত্রুটি ছুঁড়ে দেয়।

³Ḳ¹ƇUJ2&TƲ¦K
“çỤḷṁŀDṀẠṠGmḟĖƲƑ⁽Ḳḟ»ŒV
ØẠ” ṭ³eƇ⁼£

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


0

Japt 2.0a0 -S, 41 বাইট

¸¬è\L ?`SÀZn­ Û § «e Ò5s`:UeS²S ¸ËzEc2

চেষ্টা করে দেখুন

¸¬è\L ?`...`:UeS²S ¸ËzEc2     :Implicit input of string U
¸                             :Split on spaces
 ¬                            :Join
  è                           :Count occurrences of
   \L                         :RegEx /[^A-Z]/gi
      ?`...`:                 :If truthy return the compressed string "Sentence must only use letters", else
             Ue               :Recursively replace in U
               S²S            :  Two spaces with one
                   ¸          :Split on spaces
                    Ë         :Map each element at 0-based index E
                     z        :  Rotate clockwise by 90 degrees multiplied by
                      Ec2     :    E rounded up to the nearest multiple of 2
                              :Implicit output, joined with spaces

0

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

ðKDáÊi“¸–ƒ—€É€Å™ê“.ªFë#áεN4%>2÷iR]ðý

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

যখন ইনপুটটি কেবল না থাকে তখন নিম্নলিখিত ত্রুটিটি ছুঁড়ে দেয় [A-Za-z ] :

(রানটাইম এরির) বাক্য রূপান্তর করা যায়নি কেবলমাত্র পূর্ণসংখ্যায় অক্ষর ব্যবহার করতে হবে।

ব্যাখ্যা:

ðK                   # Remove all spaces from the (implicit) input-string
  Dá                 # Create a copy, and remove everything except for letters from this copy
    Êi               # If the copy with letters removed and the original are NOT equal:
      “¸–ƒ—€É€Å™ê“   #  Push dictionary string "sentence must only use letters"
                   #  With sentence capitalization
      F              #  And try to loop that many times, causing the error above
     ë               # Else:
      #              #  Split the (implicit) input-string on spaces
       á             #  Only keep letters (which will remove empty items caused by multiple
                     #  adjacent spaces in the input, which is shorter than `õK`)
        ε            #  Map each word to:
         N4%>2÷      #   Calculate ((index modulo-4) + 1) integer-divided by 2
                     #   (results in 0,1,1,2,0,1,1,2,0,1 for indices 0,1,2,3,4,5,6,7,8,9)
               i     #   If this is exactly 1:
                R    #    Reverse the current word
     ]               # Close the if-statement, map, and if-else statement
      ðý             # Join the modified word-list by spaces
                     # (and then output it implicitly as result)

আমার এই 05AB1E টিপটি দেখুন (অভিধানটি কীভাবে ব্যবহার করবেন? ) কেন “¸–ƒ—€É€Å™ê“তা বোঝার জন্য "sentence must only use letters"


0

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

foreach(explode(' ',$argn)as$a){if(!ctype_alpha($a))throw new Exception('Sentence must only use letters');$o.=(++$i%4>1?strrev($a):$a).' ';}echo$o;

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

বা যদি die()"ব্যতিক্রম" হিসাবে গ্রহণযোগ্য হয়:

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

foreach(explode(' ',$argn)as$a){if(!ctype_alpha($a))die('Sentence must only use letters');$o.=(++$i%4>1?strrev($a):$a).' ';}echo$o;

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

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