হ্যাঁ তবে না তবে হ্যাঁ


46

আমার সহকর্মী আমাকে সম্প্রতি রসিকতা হিসাবে জাভাস্ক্রিপ্টের নীচের অংশটি পাঠিয়েছেন:

let butScript = (nrOfButs) => {
    for(var i = 0; i < nrOfButs; i++){
        if(i % 3 == 0){
            console.log("Yeah")
        }
        if(i % 2 == 0){
            console.log("But")
        }
        if(i % 3 == 1){
            console.log("No")
        }
    }
}

কোডটি কাজের সময়কালে লেখা হয়েছিল, এটি অবশ্যই সংস্থার সংস্থানগুলির বিশাল অপচয় waste ভবিষ্যতে অনুরূপ ঘটনা রোধ করতে আমাদের অবশ্যই কাজের সময়গুলির অপচয়গুলি হ্রাস করতে হবে। এবং যেহেতু এটি একটি সাধারণ জ্ঞান যে একটি সংক্ষিপ্ততর প্রোগ্রামটি দ্রুত লেখার জন্য দ্রুত, তাই আমাদের এই কোডটি যতটা সম্ভব সংক্ষিপ্ত হতে হবে!

ইনপুট

একটি একক অ-নেতিবাচক পূর্ণসংখ্যা। আপনি অবশ্যই ত্রুটিযুক্ত ইনপুট পরিচালনা করবেন না।

আউটপুট

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

অদৃশ্য হওয়ার কারণে প্রতিটি লাইনের শেষে (তবে শুরুতে নয়) অ-নিউলাইন শ্বেতস্পেস অক্ষরগুলি অন্তর্ভুক্ত করার অনুমতি রয়েছে। আউটপুটটির একেবারে শেষে একটি অতিরিক্ত নতুন লাইন অক্ষর অনুমোদিত।

উদাহরণ

Input: 0
Output:


Input: 1
Output:
Yeah
But

Input: 2
Output:
Yeah
But
No

Input: 10
Output:
Yeah
But
No
But
Yeah
But
No
Yeah
But
No
But
Yeah

3
আমরা কি লাইনের একটি তালিকা ফিরিয়ে দিতে পারি?
জো কিং

10
এটি একটি মজার চ্যাপ সঙ্গে কাজ করতে হবে বিনোদনমূলক! : s কিছুটা গুরুতর নোটের উপর: nrOfButsভেরিয়েবলটি বরং খারাপ নামকরণ এবং বিভ্রান্তিকর। যাইহোক দুর্দান্ত চ্যালেঞ্জ।
আর্নল্ড

10
শেষ লাইনটি যদি "আমরা getশ্বর বিশ্বাস করতে পারেন না যে আপনি ঠিক এটি বলেছেন!" তবে আমরা কী বোনাস পাই?
Ciaran_McCarthy

3
@ এরিকথ আউটগল্ফার ifগুলি পতনের জন্য এবং তাদের অবস্থা সন্তুষ্ট হলে বর্তমান লুপে চালিয়ে যান।
ডিজাইমা

4
এখনও সবচেয়ে অস্ট্রেলিয়ান কোডগল্ফ? এটি "না" হওয়া উচিত
নচট - মনিকা পুনরায়

উত্তর:


48

এক্সেল, 78 বাইট

কক্ষ এ 1 এ ইনপুট ধরেছে এবং সেই ওয়ার্ডর্যাপ বিন্যাসটি ঘরের জন্য চালু করা আছে। স্ট্রিংয়ের মধ্যে লাইন ফিডগুলি যুক্ত করতে Alt + এন্টার ব্যবহার করুন এবং হোয়াইটস্পেসটি নোট করুন। REPT ফাংশনের সীমাবদ্ধতার কারণে কেবল 3570 পর্যন্ত ইনপুট হ্যান্ডেল করে (শুভকামনা যদিও কোনও সেলটি লম্বা হতে পারে)।

=LEFT(REPT("Yeah
But
No      
But     
Yeah    
But
No           
",595),A1*9)

সাদা জায়গার জন্য পিরিয়ড সহ পুনরায় মুদ্রণ করা হচ্ছে

=LEFT(REPT("Yeah
But
No......
But.....
Yeah....
But
No...........
",595),A1*9)

এটি কীভাবে কাজ করে: প্যাটার্নটি প্রতি 6 টি সংখ্যা পুনরাবৃত্তি করে:

0 = Yeah and But      Yeah + linefeed + But + linefeed
1 = No                No + 6 whitespace + line feed
2 = But               But + 5 whitespace + linefeed
3 = Yeah              Yeah + 4 whitespace + linefeed
4 = But and No        But + linefeed + No + 3 whitespace
5 = Blank             8 whitespace + linefeed

এর প্রত্যেকটি 9 টি অক্ষরের সাথে প্রকাশ করা যেতে পারে, সুতরাং স্ট্রিংটি 54 টি অক্ষর (9 * 6) দিয়ে তৈরি করা হয়, তারপরে এক্সেলের অনুমতি অনুসারে বড় আকারে পুনরাবৃত্তি করা হয়। তারপরে এটি আউটপুট হিসাবে বাম 9 * (ইনপুট সংখ্যা) অক্ষর নেয়।

"তবে এবং কোনও" এর জন্য লাইনফিডটি ফাঁকা পরে রাখা হয়নি যাতে # 6, # 12, (ইত্যাদি) এর হ্যাঁ ডান পরিবর্তে বামে ফর্ম্যাট করা যায় এবং যাতে প্রতি 6th ষ্ঠ লাইনে কোনও ফাঁকা লাইনফিড যুক্ত হয় না আইটেমের জন্য।

আউটপুট


1
আমার এটি যাচাই করার কোনও উপায় নেই তবে আপনার বিবরণটি এটিকে সঠিক বলে মনে হচ্ছে। আপনি কিছু ইনপুট / আউটপুট জোড়া যুক্ত করতে পারেন? আরও হাস্যকর ভাষাগুলির একটি, তবে তবে দুর্দান্ত উত্তর।
সর্বোচ্চ

16
@ ম্যাক্সব অন্যান্য ভাষাগুলি মারধর করার সময় সমস্ত হাস্যকর হতে পারে না।
কেতা

1
দুর্দান্ত ব্যাখ্যা এবং খুব দুর্দান্ত কৌশল। LibreOffice ক্যালকের পাশাপাশি কাজ করে তবে ফর্ম্যাটিংয়ের সাথে কিছু খেলার প্রয়োজন হতে পারে। +1
এলপিড্রো

20

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

f=n=>n?f(n-1)+[s=n&1?`But
`:'',`Yeah
`+s,s+`No
`][n%3]:''

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

কিভাবে?

আমরা একটি পুনরাবৃত্ত ফাংশন ব্যবহার করি যা থেকে পরিবর্তে থেকে চলে ।1 0 n - 1n10n1

ফলস্বরূপ, রেফারেন্স কোডের তুলনায় পরীক্ষাগুলি দ্বারা বন্ধ রয়েছে :1

  • যদি , আউটপুট "হ্যাঁ"n1(mod3)
  • যদি , আউটপুট "তবে"n1(mod2)
  • যদি , আউটপুট "না"n2(mod3)

এটি আমাদের প্রথম এন্ট্রি হিসাবে কে সরল কেস সংরক্ষণ করতে দেয় , যেখানে আমরা সংজ্ঞা দিতে পারি : একটি ভেরিয়েবল হোল্ডিং বা খালি স্ট্রিং।এসn0(mod3)s"But\n"

অন্য দুটি এন্ট্রি যথাক্রমে হিসাবে "Yeah\n" + sএবং সংজ্ঞায়িত করা s + "No\n"হয়।

দ্রষ্টব্য: থেকে পর্যন্ত পুনরাবৃত্তি করে আমরা প্রথম এন্ট্রিতে ঠিক একইভাবে সংজ্ঞায়িত করতে পারি তবে দুটি অতিরিক্ত বন্ধনী ব্যয় করতে হবে ।0 এসn10s

মন্তব্য

f = n =>            // n = input
  n ?               // if n is not equal to 0:
    f(n - 1) +      //   prepend the result of a recursive call with n - 1
    [               //   define our lookup array:
      s = n & 1 ?   //     1st entry: if n is odd:
        `But\n`     //       set s to "But"
      :             //     else:
        '',         //       set s to an empty string
      `Yeah\n` + s, //     2nd entry: "Yeah" followed by s
      s + `No\n`    //     3rd entry: s followed by "No"
    ][n % 3]        //   append the correct entry for this iteration
  :                 // else:
    ''              //   return an empty string and stop recursion

16

LOLCODE , 257 বাইট

HAI 1.2
I HAS A B
GIMMEH B
B IS NOW A NUMBR
I HAS A C ITZ 0
IM IN YR L UPPIN YR C TIL BOTH SAEM B AN C
I HAS A D ITZ MOD OF C AN 3
D
WTF?
OMG 0
VISIBLE "Yeah"
OIC
MOD OF C AN 2
WTF?
OMG 0
VISIBLE "But"
OIC
D
WTF?
OMG 1
VISIBLE "No"
OIC
IM OUTTA YR L
KTHXBYE

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


2
এটি দুর্দান্ত দেখায় (আমি এটির কোডটি ঘৃণা করব!), তবে পরীক্ষার ক্ষেত্রে 10 2 য় "না" এবং তৃতীয় "তবে" উল্টে যান ... তাই হ্যাঁ, তবে না: ডি
সিডোগজি01

2
ওফফ, ভেবেছিলাম আমি সেখানে অনুকূলিত করতে পারি। এটি একটি কৃপণ নিদর্শন। আমি এখন এটি স্থির।
জোশিহায়ারানওয়ান

1
আমি এটি পড়ার
পদ্ধতিটি পছন্দ

4
না VISIBLE "But"ট্রাউজার্স প্রোগ্রামের অভাব পড়ুন?
জেডিএল

12

হোয়াইটস্পেস , 315 304 300 277 276 বাইট

-জোকিংকে -১১ বাইটের জন্য (8 থেকে 7 টি ব্যবহৃত লেবেলের পরিমাণ হ্রাস করা) এবং -২৪ টি আরও বাইট (প্রোগ্রামটির সাধারণ প্রবাহ পরিবর্তন করা এবং প্রক্রিয়ায় ব্যবহৃত লেবেলের পরিমাণ 7 থেকে ৫ টি হ্রাস) এর জন্য ধন্যবাদ Thanks

[S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer][N
S S N
_Create_Label_LOOP][S S S N
_Push_0][T  T   T   _Retrieve][N
T   S S N
_If_negative_jump_to_Label_PRINT][S S S N
_Push_0][T  T   T   _Retrieve][S S S T  T   N
_Push_3][T  S T T   _Modulo][S S S T    S N
_Push_2][T  S S T   _Subtract][N
T   T   T   N
_If_negative_jump_to_Label_SKIP_NO][S S T   T   S T T   T   T   S N
_Push_-94_\n][S S S T   T   T   N
_Push_7_o][S S T    T   T   S T S N
_Push_-26_N][N
S S T   N
_Create_Label_SKIP_NO][S S S N
_Push_0][T  T   T   _Retrieve][S S S T  S N
_Push_2][T  S T T   _Modulo][N
T   S S S N
_If_0_jump_to_Label_SKIP_BUT][S S T T   S T T   T   T   S N
_Push_-94_\n][S S S T   T   S S N
_Push_12_t][S S S T T   S T N
_Push_13_u][S S T   T   S S T   T   S N
_Push_-38_B][N
S S S S N
_Create_Label_RETURN_FROM_BUT][S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T   T   T   _Retrieve][S S S T  N
_Push_1][T  S S T   _Subtract][T    T   S _Store][T T   T   _Retrieve][S S S T  T   N
_Push_3][T  S T T   _Modulo][N
T   S S T   N
_If_0_jump_to_Label_YEAH][N
S N
N
_Jump_to_Label_LOOP][N
S S S T N
_Create_Label_YEAH][S S T   T   S T T   T   T   S N
_Push_-94_\n][S S S N
_Push_0_h][S S T    T   T   T   N
_Push_-7_a][S S T   T   T   N
_Push_-3_e][S S T   T   T   T   T   N
_Push_-15_Y][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    T   S T S S S N
_Push_104][T    S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন-লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইন সহ)।

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

সিউডো-কোডে ব্যাখ্যা:

Read STDIN as integer, and store it in the heap
Start LOOP:
  Integer i = retrieve integer from heap
  If(i is negative):
    Call function PRINT
  If(i modulo-3 is NOT 2):
    Jump to Label SKIP_NO
  Push "\noN" to the stack
  Label: SKIP_NO
  If(i modulo-2 is 0):
    Jump to Label SKIP_BUT
  Push "\ntuB" to the stack
  Label: SKIP_BUT
  i = i - 1
  Replace i in the heap with this updated value
  If(i modulo-3 is 0):
    Call function YEAH
  Go to next iteration of LOOP

function YEAH:
  Push "\nhaeY" to the stack
  Go to next iteration of LOOP

function PRINT:
  Print top of the stack as character to STDOUT
  Go to next iteration of LOOP (which will enter the if and then
                                comes back to this PRINT again)

অতিরিক্ত ব্যাখ্যা:

সাধারণভাবে, এটি ইনপুট থেকে 0 এ নেমে আসে, একটি নতুন লাইনের দিকে ধাক্কা দেয় এবং শব্দটি বিপরীত হয় (সুতরাং "হ্যাঁ \ n", "তবে B nhaeY" এর পরিবর্তে "N nN", "\ ntuB", "ha nhaeY" "," না \ n ")। এবং ইনপুটটি 0 এ নিচে নেমে যাওয়ার পরে এবং সমস্ত অক্ষর স্ট্যাকের মধ্যে রয়েছে, এটি সেই অক্ষরগুলি বিপরীতে মুদ্রণ করবে (সুতরাং সঠিক আউটপুট ক্রম)।

আরও গভীরতার মধ্যে: যদিও আমাদের শব্দগুলি পরিসরে মুদ্রণ করা দরকার (input, 0], এটি [input, 0)পরিবর্তে পরিসরে লুপ হবে। এর কারণে, আমরা if(i%3 == 2)"\ noN" (বা আসলে, if(i%3 != 2)"\ noN" এর পুশিং এড়িয়ে যেতে পারি) এর if(i%2 != 1)জন্য চেকটি ব্যবহার করতে পারি, এবং আমরা "tu ntuB" এর জন্য চেকটি ব্যবহার করি (বা আসলে, if(i%2 == 0)"\ ntuB" এর চাপটি এড়িয়ে চলি )। কেবলমাত্র এই দুটি চেকের পরে আমরা i1 দ্বারা পুনরাবৃত্তি হ্রাস করব এবং তারপরে if(i%3 == 0)"\ nhaeY" চাপার জন্য চেকটি করুন, চ্যালেঞ্জ বর্ণনার জেএস উদাহরণ কোডের মতো। লেবেলে যাওয়ার পরিবর্তে যদি-না-পরীক্ষা হয় তবে এড়িয়ে যাওয়া এবং লেফেলটি থেকে if-চেকগুলি 23 বাইট সংরক্ষণ করে saved

এছাড়াও, হোয়াইটস্পেসে অক্ষরগুলির মানগুলি তাদের ইউনিকোড মান হিসাবে স্ট্যাকের মধ্যে সংরক্ষণ করা হয় (অর্থাত্ 10নতুন লাইনের 65জন্য, 'এ' এর জন্য, 'এ' 97ইত্যাদির জন্য)। যেহেতু অক্ষরগুলি মুদ্রণের জন্য আমার ইতিমধ্যে স্ট্যাকের উপরে লুপ করা দরকার, তাই অক্ষর হিসাবে মুদ্রণের আগে, সংখ্যাটির মানগুলিতে একটি ধ্রুবক যুক্ত করে বাইট-কাউন্টটি কম করার জন্য আমি আমার হোয়াইটস্পেস টিপটি ব্যবহার করতে সক্ষম হয়েছি ।
এই ধ্রুবকটি 104এই ক্ষেত্রে, যা এই জাভা প্রোগ্রামটির সাথে উত্পন্ন যা আমি এর আগে আমার আরও একটি হোয়াইটস্পেস উত্তরটি গল্ফ করতে ব্যবহার করেছি । কোডের এই অংশটিও এটি কারণ:

[S S T  T   S T T   T   T   S N
_Push_-94_\n][S S S T   T   T   N
_Push_7_o][S S T    T   T   S T S N
_Push_-26_N]

-94নতুন লাইন, 7'ও' এবং -26'এন' এর জন্য মান রয়েছে । কারণ ধ্রুবক যোগ করার 104ইচ্ছা সঠিকভাবে আমাদের ইউনিকোড মান দিতে 10, 111এবং 78যথাক্রমে এই অক্ষরগুলি জন্য।


1
আমি অবশ্যই কোনও হোয়াইটস্পেস উত্তর আশা করিনি। সাবাশ!
ম্যাক্সবি

@ ম্যাক্সবি ধন্যবাদ! দুর্ভাগ্যক্রমে এটি প্রয়োজনীয় 8 টি লেবেলের কারণে এটি প্রত্যাশার চেয়ে বেশ খানিকটা দীর্ঘ .. তবে আমি এটি ইতিমধ্যে খুশি হয়ে কাজ করছি। :)
কেভিন ক্রুইজসেন

শর্তটি মিথ্যা হলে আপনি কি বিবৃতিটি পরবর্তী এড়িয়ে গিয়ে অর্ধন করতে পারবেন না? যেমনif i modulo-3 != 1 jump to next if else push NO
জো কিং

1
@ জোকিং আহ অপেক্ষা করুন, আমি আপনার সিডো কোডের একটি অংশ ভুল বুঝেছি। সত্যটি iহওয়ার আগে পুনরুদ্ধার না করার বিষয়ে আমার প্রথম সমস্যাটি if(i is 0) call PRINT, তবে আপনার অন্যটি iএটি বিয়োগ করে এবং প্রিন্টগুলি এড়িয়ে যাওয়ার আগে পরীক্ষা করছে । আসলে বেশ স্মার্ট। এটি বাস্তবায়ন অব্যাহত রাখবে।
কেভিন ক্রুইজসেন

1
ঠিক আছে, আপনি যদি লুপটির শুরুতে ঝাঁপ দেন, এটি আবার if স্টেটমেন্টটি চালাবে এবং সরাসরি মুদ্রণ ফাংশনে ফিরে যাবে। আপনি যদি লুপের লেবেলটি খালি লেবেলে পরিবর্তন করেন তবে এটি কোনও বাইট সংরক্ষণ করে
জো কিং


11

পার্ল 6 , 63 50 বাইট

{<<"Yeah But"No But Yeah"But No">>[^$_ X%6].words}

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

নামবিহীন কোড ব্লক যা একটি সংখ্যা নেয় এবং লাইনের একটি তালিকা প্রদান করে

ব্যাখ্যা:

{                                                }   # Anonymous code block
 <<"Yeah But"No But Yeah"But No">>  # Create the list of strings:
                                     # Yeah But
                                     # No
                                     # But
                                     # Yeah
                                     # But No
                                  [       ]  # Index into this list
                                   ^$_  # The range from 0 to n-1
                                       X%6  # All modulo 6
                                           .words  # Convert the list to a string 
                                                   # Which joins by spaces
                                                   # And split by whitespace


8

05 এ বি 1 ই (উত্তরাধিকার) , 27 25 24 বাইট

কেভিন ক্রুইজসেনকে ধন্যবাদ 1 বাইট সংরক্ষিত ।

F”¥æ€³€¸”#N3ÖNÈN3%‚‚˜Ï`»

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

ব্যাখ্যা

F                          # for N in [0 ... input] do:
 ”¥æ€³€¸”#                 # push ['Yeah', 'But', 'No']
          N3Ö              # push N % 3 == 0
             NÈ            # push N % 2 == 0
               N3%         # push N % 3
                  ‚‚˜      # add the 3 numbers to a list
                     Ï     # keep only the strings whose corresponding value  
                           # in the int list is true (1)
                      `»   # push strings separately to stack and join stack on newlines

ডাং, আপনি আমাকে মারলেন .. উত্তর পোস্ট করতে চলেছেন। আপনার যাহাই হউক না কেন, আমার কাছ থেকে +1 .. চমৎকার ব্যবহার ×, সে সম্পর্কে ভাবেনি!
কেভিন ক্রুইজসেন

বাহ, আমি এই সম্পর্কে একটি ব্যাখ্যা পছন্দ করব। আমার ব্যক্তিগত সেরা সিজেমে 44 বাইট ছিল।
সর্বোচ্চ

@ ম্যাক্সবি: আমি অবশ্যই একটি ব্যাখ্যা যুক্ত করব। আমি প্রথমে আরও কিছুটা গল্ফ করতে পারি কিনা তা দেখার জন্য আমি যাচাই করছি;)
এমিগিনা

আপনি Θএখন আর ব্যবহার করতে পারবেন না ×যেহেতু Ïআপনি আর ব্যবহার করছেন না , যেহেতু কেবলমাত্র কেবলমাত্র দেখতে পাবেন 1, সুতরাং এটি 2(এবং 0অবশ্যই) উপেক্ষা করে ।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: ধন্যবাদ! আমি কীভাবে এটি মিস করেছি তা নিশ্চিত নয়: পি
এমিগিনা


6

পাইথন 2 , 97 95 92 90 83 81 বাইট

lambda n:[w for i in range(n)for w in'Yeah','But','No'if('N'in w)==i%(3-(w<'N'))]

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

-২ বাইট, ওভসকে ধন্যবাদ


পাইথন 3 , 92 90 85 83 বাইট

lambda n:[w for i in range(n)for w in['Yeah','But','No']if('N'in w)==i%(3-(w<'N'))]

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

-4 বাইট, ওভসকে ধন্যবাদ

-4 বাইটস, জো কিংকে ধন্যবাদ


দুটি সংযুক্ত করে 86 টি বাইট এবং লাইনের তালিকা হিসাবে ফিরে
জো কিং

@ জোকিং ধন্যবাদ, জানেন না যে আমি এটি লেখার সময় মুদ্রণের পরিবর্তে ফিরে আসতে পারি।
টিফিল্ড

82 বাইট : len(w)<3-> 'N'in w, 81 বাইট : len(w)%2->(w<'N')
ovs


6

গ্রোভি (ফাংশন), by৯ বাইট

প্রথমদিকে আমার উত্তর জমা দেওয়ার পরে, আমি এখানে একটি উপযুক্ত উত্তর কী তা নিয়ে কিছু historicতিহাসিক আলোচনা সন্ধান করেছি। যেহেতু জাভাতে কেবলমাত্র একটি পদ্ধতি সরবরাহের জন্য এটি গ্রহণযোগ্যভাবে মনে হয় (রিটার্নের ধরণ এবং প্যারামিটারের ঘোষণা সহ), সুতরাং এখানে একটি সংক্ষিপ্ত গ্রোভি, পদ্ধতি যার পদ্ধতিটির ফেরতের মান উত্তর হতে পারে। defরিটার্নের ধরনটি অনুমান করা হয় এর অর্থ ব্যবহার ।

def a(int n){n?a(--n)+(n%3?'':'Yeah\n')+(n%2?'':'But\n')+(n%3==1?'No\n':''):''}

নীচের মূল উত্তরটির বিপরীতে, যা 0 থেকে এন -1 পর্যন্ত লুপ করে, এইটি নিজেকে এন থেকে নীচে 1 এ কল করে তবে পুনরাবৃত্তির কলটিতে বাকী রেখার ইনপুট হ্রাস করে।

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

গ্রোভি (প্রোগ্রাম), 87 বাইট

খাঁজকাটা স্ক্রিপ্ট নির্দিষ্ট সাধারণ আমদানির প্রয়োজন হয় না, তাই এই একটি প্রোগ্রাম ঘোষণা করেও জাভার stdout- এ উত্তর মুদ্রণ হতে পারে System.out.আগে print। এটি কিছু সাধারণ ইউটিলিটি পদ্ধতিও সরবরাহ করে, যেমন toLong()এটি আমাদের ইনপুট যুক্তি যুক্তিসঙ্গতভাবে পার্স করতে দেয়।

মূলত জাভা 10 টি উত্তর, তবে গ্রোভির সংক্ষিপ্ত লুপ সিনট্যাক্স এবং সত্যবাদী বক্তব্যগুলি মূল্যায়নের দক্ষতার পক্ষে উপস্থাপন করা।

args[0].toLong().times{print((it%3?'':'Yeah\n')+(it%2?'':'But\n')+(it%3==1?'No\n':''))}

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


পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর! আমি নিজে কোনও গ্রোভিকে কোড করে নেই, তবে আমি কি টিআইও- তে আপনার কোড চালানোর পরামর্শ দিতে পারি ? এইভাবে, এটি অন্যদের দ্বারা বৈধতা দেওয়া যেতে পারে, এবং সকলেই উপভোগ করতে পারে।
ম্যাক্সবি

1
@ ম্যাক্সবি ধন্যবাদ! আমি একটি যুক্ত করেছি :)
archangel.mjj

প্রথম প্রথম উত্তর এবং পিপিসিজিতে স্বাগতম।
এলপেড্রো

5

রেটিনা 0.8.2 , 45 বাইট

.+
$*
1
$`Yeah¶$`But¶$`11No¶
+`11B
B
111

A`1

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

.+
$*

ইনপুটটি আনারিতে রূপান্তর করুন।

1
$`Yeah¶$`But¶$`11No¶

প্রতিটি পূর্ণসংখ্যার জন্য 0...n-1, তিনটি লাইন পাঠ্য তৈরি করুন, প্রতিটি শব্দের জন্য একটি, i 1এর আগে এর সাথে এস No, যার দুটি অতিরিক্ত 1এস রয়েছে যাতে আমরা গণনা করি (i+2)%3==0যেটির সমতুল্য i%3==1

+`11B
B

1এর আগে Bএস এর জোড়া সরিয়ে ফেলুন ।

111

1অন্য কোথাও তিনজনের দলে এস সরান ।

A`1

এখনও থাকা সমস্ত লাইন মুছুন 1


ওহ, এখন যেহেতু আমি 11No¶গণনা করতে দেখছি (i+2)%3==0(সুতরাং তিনটিই যদি চেক করা হয় তবে ==0) এটি এতটা সুস্পষ্ট দেখাচ্ছে, তবে আমি নিজেই সেটিকে ভাবিনি, তাই এটি আসলে বেশ দক্ষ। আমার কাছ থেকে +1, দুর্দান্ত উত্তর!
কেভিন ক্রুইজসেন

5

জাভা 10, 100 99 বাইট

n->{for(int i=0;i<n;)System.out.print((i%3<1?"Yeah\n":"")+(i%2<1?"But\n":"")+(++i%3>1?"No\n":""));}

-1 বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

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

ব্যাখ্যা:

n->{                   // Method with integer parameter and no return-type
  for(int i=0;i<n;)    //  Loop `i` in the range [0, `n`)
    System.out.print(  //   Print to STDOUT:
      (i%3<1?          //    If `i` is divisible by 3:
        "Yeah\n"       //     Print "Yeah" with newline
      :"")+(i%2<1?     //    If `i` is even:
        "But\n"        //     Print "But" with newline
      :"")+(++i%3>1?   //    If `i` modulo-3 is 1:
        "No\n"         //     Print "No" with newline
      :                //    If none of the above three if's applied to the current `i`:
       ""));}          //     Print nothing for the current `i`

1
++i%3>1সম্ভবত আপনাকে একটি বাইট সংরক্ষণ করবে
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়েরগ্রোওয়ের অবশ্যই ধন্যবাদ!
কেভিন ক্রুইজসেন

5

পাওয়ারশেল, 75 74 72 67 66 বাইট

-১ বাইট ধন্যবাদ টেসেল্লাটিংহেকলার

param($n)(" Yeah
But No But Yeah But
No "*$n-split' ')[1..$n]-ne''

পরীক্ষার স্ক্রিপ্ট এবং ব্যাখ্যা:

$f = {

param($n)(" Yeah
But No But Yeah But
No "*$n-split' ')[1..$n]-ne''

# 1. repeat the string $n times
# 2. split by space
# 3. get elements from 1 to $n
# some elements are multiline strings, some elements are $null:
# ($null,"Yeah`nBut","But","No","But","Yeah","But`nNo",$null,...)
# 4. remove $null elements from result array

}

# Output results
@(
    0,1,2,10
) | % {
    &$f $_
    "======"
}

# Advanced test
@(
    ,(0,'')
    ,(1,'Yeah But')
    ,(2,'Yeah But No')
    ,(3,'Yeah But No But')
    ,(4,'Yeah But No But Yeah')
    ,(5,'Yeah But No But Yeah But No')
    ,(6,'Yeah But No But Yeah But No')
    ,(7,'Yeah But No But Yeah But No Yeah But')
    ,(8,'Yeah But No But Yeah But No Yeah But No')
    ,(9,'Yeah But No But Yeah But No Yeah But No But')
    ,(10,'Yeah But No But Yeah But No Yeah But No But Yeah')
    ,(20,'Yeah But No But Yeah But No Yeah But No But Yeah But No Yeah But No But Yeah But No Yeah But No')
) | % {
    $n,$e = $_
    $r = &$f $n
    $r = $r-split"`n"       # simplify test string
    "$($e-eq$r): $n : $r"
}

আউটপুট:

======
Yeah
But
======
Yeah
But
No
======
Yeah
But
No
But
Yeah
But
No
Yeah
But
No
But
Yeah
======
True: 0 :
True: 1 : Yeah But
True: 2 : Yeah But No
True: 3 : Yeah But No But
True: 4 : Yeah But No But Yeah
True: 5 : Yeah But No But Yeah But No
True: 6 : Yeah But No But Yeah But No
True: 7 : Yeah But No But Yeah But No Yeah But
True: 8 : Yeah But No But Yeah But No Yeah But No
True: 9 : Yeah But No But Yeah But No Yeah But No But
True: 10 : Yeah But No But Yeah But No Yeah But No But Yeah
True: 20 : Yeah But No But Yeah But No Yeah But No But Yeah But No Yeah But No But Yeah But No Yeah But No

সোজা স্ক্রিপ্ট, 72 বাইট:

$args|?{$_}|%{0..--$_|%{@('Yeah')[$_%3]
@('But')[$_%2]
@{1='No'}[$_%3]}}

1
দুর্দান্ত উত্তর! এটি কোনও অনলাইন অনুবাদককে অন্তর্ভুক্ত না করায় উত্তরে কি কিছু আউটপুট যুক্ত করা সম্ভব হবে?
সর্বোচ্চ

উত্তর স্ক্রিপ্টব্লক ফিরে আসে না ======। এটি Yeah,But,Noকেবল স্ট্রিং উত্পন্ন করে। পরীক্ষার স্ক্রিপ্টটি কেবলমাত্র ফলাফলগুলি সহজেই পড়ার জন্য পৃথককারী দেখায়।
mazzy

এই হ্যাশটেবল ব্যবহার চালাক। আমি এটা মনে রাখা দরকার।
অ্যাডমবর্কবার্ক


1
@ মমজি আমি আপনার সংশোধন করতে পারি, তবে এখনও beat 67 টি পরাতে পারি না (দু'জনকে রিয়েল নিউলাইন দিয়ে প্রতিস্থাপন করুন)(" Yeah\nBut No But Yeah But\nNo "*($j="$args")|% s*t 32)[1..$j]-ne''
টেসেল্লাটিংহেকলার

4

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

f n=[1..n]>>=(3?1)"Yeah"<>(2?1)"But"<>(3?2)"No"
(a?b)c n=[c|n`mod`a==b]

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

ব্যাখ্যা

খুব সহজ, [1..n]পরিবর্তে দুটি বাক্স সংরক্ষণ করে [0..n-1]এবং বাকী অনুসরকারীদের সমন্বয় করে: অপারেটর (?)পরীক্ষাগুলি চারটি আর্গুমেন্ট গ্রহণ করে, খালি তালিকাটি প্রদান করে বা ফলাফলটি সঠিক হলে সিঙ্গলটন হিসাবে সরবরাহিত স্ট্রিং দেয়।

চতুর্থ আর্গুমেন্টটি কারি করে (?)আমরা (<>)প্রতিটি ফাংশনের ফলাফলকে বোঝাতে ব্যবহার করতে পারি , যেমন:

(3?1)"Yeah" <> (2?1)"But" <> (3?2)"No"  \i-> (3?1)"Yeah" i ++ (2?1)"But" i ++ (3?2)"No" i

4

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক ) , 105 99 94 96 89 বাইটস

i=>{for(int x=0;x<i;)Write((x%3<1?"Yeah\n":"")+(x%2<1?"But\n":"")+(x++%3==1?"No\n":""));}

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


4
এর মতো ইন্টারপোলেশন অপসারণ করা 7 বাইট সংরক্ষণ করে।
এমিগানা

@ এমিগনা টিপটির জন্য ধন্যবাদ, উত্তরটি পরিবর্তন করেছেন
অহমায়ান

1
x++%3==1?হতে পারে ++x%3>1?। অন্য কেউ আমার জাভা উত্তরের জন্য এটিকে পরামর্শ দিয়েছেন, তবে এটি আপনার সি # উত্তরটিতে প্রযোজ্য। :)
কেভিন ক্রুইজসেন

4

পিপ , 37 35 33 বাইট

"But 
Yeah
No
"<>5@:^[t2io02x]@<a

(এর পরে স্থানটি নোট করুন But)) কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

এই ব্যাখ্যাটি পূর্ববর্তী সংস্করণটির জন্য - চেঞ্জলগের জন্য নীচে দেখুন

জো কিং এর পার্ল 6 উত্তর দ্বারা অনুপ্রাণিত । আমরা এই তালিকাটি নির্মাণ:

[
 "Yeah
 But
 ";
 "No
 ";
 "But
 ";
 "Yeah
 ";
 "But
 No
 ";
 ""
]

এবং aচক্রীয় সূচক ব্যবহার করে এর প্রথম উপাদানগুলি আউটপুট দেয় ।

[t2io02x]R,3["But""Yeah""No"].n@<:a
                                     i is 0; o is 1; t is 10; x is ""; n is newline;
                                     a is 1st cmdline arg (implicit)
[       ]                            Construct this list of scalars:
 t                                    10
  2                                   2
   i                                  0
    o                                 1
     02                               02
       x                              <empty string>
         R                           Treating each of these as a string, we're going to
                                     replace:
          ,3                          0, 1, and 2 (respectively)
                                     with the corresponding values from this list:
            ["But""Yeah""No"].n       These strings, each with a newline appended
                                     We now have constructed the list shown above
                               @<:a  Take the first a elements from this list, with
                                     cyclical indexing (the : is for parsing reasons)
                                     Concatenate them together and print (implicit)

আপডেট: আমি বুঝতে পেরেছিলাম যে 0/1/2 টি স্ট্রিংয়ে পরিবর্তন করার জন্য আমার প্রতিস্থাপনটি ব্যবহার করার দরকার নেই - আমি এই সংখ্যাগুলিকে সরাসরি তালিকায় সূচীতে ব্যবহার করতে পারি। এটি করার জন্য, আমাদের নিশ্চিত করতে হবে যে বহু-অঙ্কের সংখ্যাগুলি তাদের সংখ্যাগুলির তালিকাগুলিতে বিভক্ত হয়েছে (অন্যথায়, আমরা সূচিপত্র 1 এবং 0 এর পরিবর্তে 10 সূচক নির্বাচন করব)। ভাগ্যক্রমে, পাইপের সূচক হিসাবে একটি নির্বিচারে নেস্টেড তালিকাটি প্রত্যাশার মতো কাজ করে, ফলাফলের (নেস্টেড) তালিকা দেয়। 3 ইনপুট জন্য, আমরা এই তথ্য অগ্রগতি পেতে (যেখানে _একটি নতুন লাইন প্রতিনিধিত্ব করে):

"But _Yeah_No_"<>5                       ["But _"; "Yeah_"; "No_"]
                     [t2io02x]           [10; 2; 0; 1; 02; ""]
                              @<a        [10; 2; 0]
                    ^                    [[1; 0]; [2]; [0]]
                  @:                     [["Yeah_"; "But _"]; ["No_"]; ["But _"]]

আগের মত, চূড়ান্ত ফলাফল একত্রে সংক্ষিপ্ত হয়ে স্ব-মুদ্রিত হয়।


4

সংযুক্তি , 48 বাইট

Flat##{Mask[_%3'2'3=0'0'1,$Yeah'$But'$No]}=>Iota

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

ব্যাখ্যা

Flat##{Mask[_%3'2'3=0'0'1,$Yeah'$But'$No]}=>Iota   input: an integer
      {                                  }=>Iota   over each number from 0 to that integer exclusive
       Mask[             ,$Yeah'$But'$No]          select values from that array according to:
            _%3'2'3                                    whether or not the input mod 3, 2, 3
                   =0'0'1                              is 0, 0, 1
Flat##                                             flatten the intermediate results

4

সি (জিসিসি) , 77 71 74 72 69 বাইট

এখানে ইতিমধ্যে একটি আরও ভাল সি উত্তর রয়েছে তবে এটি একটি পুনরাবৃত্ত হয় এবং সোজা হয়ে উঠতে আমার কিছুটা সময় লেগেছিল তাই আমি এটি পোস্ট করছি।

@ সাইলিংক্যাট এবং @ জোনাথনফ্রেচ উভয়কেই 69 বাইট থেকে ধন্যবাদ

(আমি কখনই এন-আই + 1 এর জায়গায় n- ~ -i ব্যবহার করার কথা ভাবি না)

i;f(n){i=n&&n-i>=~n/6&&f(n,i++,puts(i%7%4?i%7%2?"But":"No":"Yeah"));}

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



ওহ, দুঃখিত। বুঝতে পারিনি ... কমপক্ষে অপসারণ jআপনাকে দুটি বাইট সংরক্ষণ করেছে।
জোনাথন ফ্রেচ

1
70 বাইট - @ সিলিংক্যাট এর একটি সংরক্ষিত বাইট অন্তর্ভুক্ত করে।
জোনাথন ফ্রেঞ্চ

1
n-~-iসমান n-i+1- না i<n+1- এবং তাই আসলে কোনও বাইট সংরক্ষণ করে না ...
জনাথন ফ্রেচ

3

রুবি, 69 72 74 বাইট

->y{puts *(1..y).map{|i|[i%3==1&&:Yeah,i%2>0&&:But,i%3>1&&:No]-[!0]}}

খুব সোজা-ফরওয়ার্ড উত্তর, এখনই একটি সংক্ষিপ্ত, পুনরাবৃত্ত পদ্ধতির জন্য চেক করা।

দুটি বাইট সংরক্ষিত হয়েছে @ বিডব্লিউও :) এর জন্য ধন্যবাদ

স্ট্রিংয়ের পরিবর্তে প্রতীক ব্যবহার করে আরও তিনটি বাইট সংরক্ষণ করা হয়েছে


3

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

[print("Yeah\n"*(i%3<1)+"But\n"*(i%2<1)+"No\n"*(i%3==1),end="")for i in range(int(input()))]

এটি ঠিক সর্বোত্তম সমাধান নয় তবে এটি আমার গ্রহণ my

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


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

3

আর, 65 বাইট

cat(c("yeah","but","no")[c(3,1:3,2,1,2)][1:scan()%%7+1],sep="\n")

আমরা কিছুটা ত্রুটিযুক্ত প্রোগ্রামটির অনুলিপি করছি (এটি প্রতি চতুর্থ "তবে" বাদ দেয়) - এটি ব্যবহার করা উচিত ছিল %4 == 1এবং শর্তের %4 == 3পরিবর্তে %3), আমাদের একটি বেkমান কলটি ব্যবহার করতে হবে cএবং বেস সাতটিতে কাজ করতে হবে । এখনও, এটি ললকোডের চেয়ে ছোট ...

(আমি আশা করছিলাম যে (3,1,2,3,2,1,2) বা lhঅন্য কোথাও ডেটাসেটে অনুরূপ অনুক্রম উপস্থিত হতে পারে তবে এটি এর মতো দেখাচ্ছে না)


3

সেড-ই ,179 150 বাইট

/^0/!s:$:g:
:l;y:abcdefg:bcdefga:
/[ae]/iYeah
/[bdf]/iBut
/[cg]/iNo
s:.$:-&:;:s;s:0-:-9:;ts;h
y:123456789:012345678:;G
s:.*(.)-.*\n(.*).-:\2\1:;tl;c\ 

সবচেয়ে শক্তিশালী অংশটি তালিকাটি তৈরি করা হয়নি তবে দশমিক সংখ্যাকে আসলে পার্স করা হয়েছিল।

শেষে যদি নতুন লাইনের প্রয়োজন না হয় তবে 2 বাইট সংরক্ষণ করা যেতে পারে: c\ d

তবুও অপ্টিমাইজেশন প্রয়োজন।

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

ব্যাখ্যা

/^0/!                            | if the input number doesn`t begin with a '0'…
     s:$:g:                      | …then append a 'g' to it and proceed
                                 |
:l;                              | loop label 'l':
   y:abcdefg:bcdefga:            | shift all occurences of [abcdef] 1 letter forward, and all 'g'-s to 'a'-s
                                 |
/[ae]/                           | if there`s an 'a' or 'e' in the input…
      iYeah                      | …output 'Yeah'
                                 |
/[bdf]/                          | if there`s a 'b' or 'd' or 'f' in the input…
       iBut                      | …output 'But'
                                 |
/[cg]/                           | if there`s a 'c' or 'g' in the input…
      iNo                        | …output 'No' 
                                 |
s:.$:-&:;                        | insert '-' before the last character
         :s;                     | loop label 's':
            s:0-:-9:;            | transform the next consecutive '0' in the end of the number to '9', if any
                     ts;         | loop to 's' if more consecutive zeroes are available
                        h        | copy the result to the temporary buffer
                                 |
y:123456789:012345678:;          | decrement all digits except '0' (N.B.: digits, not numbers)
                       G         | append the temporary buffer to the result
                                 |
s:.*(.)-.*\n(.*).-:\2\1:;        | cut and replace the digit left to the last consecutive 0 in the original
                                 | number pasted from the temporary buffer, then discard all other digits decremented
                         tl;     | …then loop to 'l' if the number is ≥0
                            c\   | insert a carriage return and exit

আপনি কিছু ব্যাখ্যা যোগ করতে পারেন দয়া করে?
ব্যবহারকারী285259

1
@ user285259 সম্পন্ন হয়েছে।
hidefromkgb


2

এফ #, 108 106 বাইট

let v p=seq{for i=1 to p do
 if i%3=1 then yield"Yeah"
 if i%2=1 then yield"But"
 if i%3=2 then yield"No"}

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

-2 থেকে পরিবর্তন বাইট i=0 to p-1থেকে i=1 to pএবং modulos সামঞ্জস্য। তা ছাড়াও বেশ সোজা-এগিয়ে।


1
আমি টিআইও লিঙ্কের জন্য একরকম বিল্ড ত্রুটি পেয়েছি, সম্ভবত পরীক্ষার কোডে একটি বাক্য গঠন ত্রুটি আছে?
সর্বোচ্চ

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

2
i=1 to p(এবং প্রাকৃতিকভাবে মডিউলগুলি সামঞ্জস্য করে) দিয়ে 2 বাইট শেভ করুন । বিপরীত রেঞ্জগুলি খালি। :)

নিস! আমি এটি যোগ করেছি। ধন্যবাদ! :)
Ciaran_McCarthy

2

পিএইচপি, 65 68 বাইট

while($i<$argn)echo["Yeah
"][$i%3],["But
"][$i%2],["No
"][~-$i++%3];

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন


এটি দেখতে দুর্দান্ত দেখাচ্ছে, তবে এটি n = 10
ম্যাক্সবি 3

@ ম্যাক্সব ইঙ্গিতটির জন্য ধন্যবাদ। আমি এটি 9 টি অতিরিক্ত বাইট দিয়ে স্থির করতে পারতাম; তবে অন্য পদ্ধতিটি সংক্ষিপ্ত।
তিতাস

2

ভিবিএ (এক্সেল), 105, 101, 99 বাইট

সম্পাদনা: কেতা থেকে -4 বাইট! ধন্যবাদ!

ক্রোনোকিডাল থেকে 2: -2 বাইট সম্পাদনা করুন! Woot! (বুঝতে পেরেছি যে পরীক্ষার কেসগুলি কেবল 10 এর জন্য কাজ করেছে Fix এখনই ঠিক করা হয়েছে)

হ্যাঁ, এক্সেল এবার ভিবিএকে হারিয়েছে। যাই হোক. (আমরা আপনার জন্য আসছি)

d=vbCr:For i=1To[a1]:a=i Mod 3:?IIf(a=1,"Yeah"+d,"")IIf(i/2=i\2,"","But"+d)IIf(a=2,"No"+d,"");:Next

^ এটি তাত্ক্ষণিক উইন্ডোতে আটকানো হয় এবং ডিবাগ উইন্ডোতে আউটপুট

Ungolfed

d = vbCr
'For 1 to the value in A1 (using 0 gave extra values, and VBA skips the for loop if 0)
For i = 1 To [a1]    'aka: Range("A1").value
    a = i mod 3
    '? is the same as Print (Debug.Print when not in the Immediate Window)
    Print IIf(a = 1, "Yeah" + d, "") _ '<-- Just a line continuation
          'Keeta taught me that the \ operator is division with truncation,
          '     so if they are equal then there is no remainder!
          IIf(i / 2 = i \ 2, "", "But" + d) _
          IIf(a = 2, "No" + d, "");
    'Print usually prints a newline, but it still outputs if the string is blank...
    '   So we append a newline -if true- and use a semi-colon to kill the newline
Next

@Keeta ভাল ধারণা, কিন্তু কোন ... আপনি আমার প্রথম কোড তাকান, আমি ব্যবহার [A1] যা রেঞ্জ / সেল .value মানে :) আমি এটা আরো স্পষ্ট করেছি উচিত যে ছিল একটি ব্যাখ্যা যদিও, দুঃখিত: /
seadoggie01

1
হ্যাঁ, আমি এটি দেখেছি এবং মন্তব্যটি মুছতে চেষ্টা করেছি। আমি আইডি 3 = 0 এর পরিবর্তে আই / 3 = আই \ 3 কীভাবে ব্যবহার করব (এবং মোড 2 = 0 এর জন্য একই)। এটি চেষ্টা করে দেখেনি, তবে এটি কি কাজ করবে?
কেতা

@ কিটা আমি \ অপারেটরটিকে এর আগে কখনও দেখিনি ... আমি মনে করি না যদিও এটি বাকী ছাড়াই বিভাগের মান ফিরিয়ে দেয় ... মোডের বিপরীতে যেমন আমি ভাবি
seadoggie01

একটিটি পূর্ণসংখ্যা বিভাগ এবং একটি হ'ল ভাসমান বিন্দু। 7/3 = 2.3333 যেখানে 7 \ 3 = 2 (কাটা বিভাগ)। 6/3 2 হওয়া উচিত, এবং 6 \ 3 এছাড়াও 2 হওয়া উচিত তাই যখনই বাকীটি শূন্য হয় তখনই এটি কাজ করা উচিত (আমার মনে হয়)।
কেতা

1
ভিবিএ স্বয়ংক্রিয়ভাবে ফাংশন আউটপুটগুলিকে &IIf(..)
একত্রিত

2

জেলি , 22 বাইট

5Rż7FṚṁị“'⁴\ÆẓNƇ»ḲŒP¤Ẏ

একটি মোনাডিক লিঙ্ক লাইনগুলির একটি তালিকা উপস্থাপন করছে (যা মনে হয় মন্তব্যে অনুমোদিত হয়েছে)

এটি অনলাইন চেষ্টা করুন! (পাদলেখ লিঙ্কটি ব্যবহার করে কল করেÇএবংYজেলির মধ্যে অন্তর্নিহিত মুদ্রণটি যদি পারেন তবে একসাথে সমস্ত কিছু টুকরোটুকরো করে নতুন লাইনের সাথে যোগ দেয়)

কিভাবে?

2×3=6

এখন লক্ষ করুন যে প্রথম ছয়টি মান হ'ল:

["Yeah", "But"]
["No"]
["But"]
["Yeah"]
["But", "No"]
[]

সুতরাং লাইনগুলির ফলাফলগুলির তালিকাটি এই মানগুলি nএকসাথে দৈর্ঘ্যের সাথে পুনরাবৃত্তি করা (বা কাটা) হওয়া উচিত ।

এখন লক্ষ করুন যে এর পাওয়ার-সেটটি "Yeah", "But", "No"হ'ল:

[]
["Yeah"]
["But"]
["No"]
["Yeah", "But"]
["Yeah", "No"]
["But", "No"]
["Yeah", "But", "No"]

সুতরাং প্রতিটি পিরিয়ড হ'ল এর পাওয়ার-সেটটির 1 টি সূচকযুক্ত মান "Yeah", "But", "No":

5, 4, 3, 2, 7, 1

কোডটি এই তালিকাটি তৈরি করে, দৈর্ঘ্যে এটি n,ালায়, পাওয়ার-সেটে সূচিগুলি তৈরি করে এবং তারপরে অভ্যন্তরীণ তালিকাগুলি সরিয়ে দেয় (এটি খালি স্ট্রিংগুলিও সরিয়ে দেয়, যেহেতু স্ট্রিংগুলি জেলিতে তালিকা রয়েছে) ...

5Rż7FṚṁị“'⁴\ÆẓNƇ»ḲŒP¤Ẏ - Link: integer, n   e.g. 10
5                      - literal five            5
 R                     - range                   [1,2,3,4,5]
   7                   - literal seven           7
  ż                    - zip together            [[1,7],[2],[3],[4],[5]]
    F                  - flatten                 [1,7,2,3,4,5]
     Ṛ                 - reverse                 [5,4,3,2,7,1]
      ṁ                - mould like (n)          [5,4,3,2,7,1,5,4,3,2]
                    ¤  - nilad followed by link(s) as a nilad:
        “'⁴\ÆẓNƇ»      -   compressed string     "Yeah But No"
                 Ḳ     -   split at spaces       ["Yeah","But","No"]
                  ŒP   -   power-set             [[],["Yeah"],["But"],["No"],["Yeah","But"],["Yeah","No"],["But","No"],["Yeah","But","No"]]
       ị               - index into              [["Yeah","But"],["No"],["But"],["Yeah"],["But","No"],[],["Yeah","But"],["No"],["But"],["Yeah"]]
                     Ẏ - tighten                 ["Yeah","But","No","But","Yeah","But","No","Yeah","But","No","But","Yeah"]

আমি সন্দেহ করি এটি এর চেয়ে আরও ছোট হতে চলেছে। চমত্কার উত্তর, এবং একটি দুর্দান্ত ব্যাখ্যা, ভাল সম্পন্ন!
ম্যাক্সবি

2

পাইথন 2 , 93 92 83 বাইট

lambda i:''.join('Yeah\n'*(x%3<1)+'But\n'*(x%2<1)+'No\n'*(x%3==1)for x in range(i))

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

@ জোনাথন ফ্রেঞ্চকে ধন্যবাদ দিয়ে একটি বিশাল 9 বাইট সংরক্ষণ করা হয়েছে


আপনি টুপল ইনডেক্সিংয়ের পরিবর্তে স্ট্রিং পুনরাবৃত্তি ব্যবহার করতে পারেন - ('','Yeah\n')[x%3<1]এর সমতুল্য "Yeah\n"*(x%3<1)
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ - খুব দুর্দান্ত! অনুরূপ কৌশল অন্যান্য ক্ষেত্রেও প্রয়োগ করা যেতে পারে। অনেক ধন্যবাদ!
এলপেড্রো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.