উত্স কোডে একটি ফাঁকা লাইন মুছে ফেলা যা অপ্রত্যাশিত কার্যকারিতা [বন্ধ] হয়ে থাকে


38

প্রোগ্রামের যুক্তির প্রবাহে একটি ফাঁকা রেখা উপস্থিত থাকলে এমন একটি স্ক্রিপ্ট লিখুন যা সেই লাইনটি সরিয়ে ফেলা বা অপ্রত্যাশিত আচরণের কারণ হয়ে যায়।

স্ট্যান্ডার্ড ফাঁকা এবং বোকা উত্তরগুলি এড়িয়ে চলুন । আপনার প্রোগ্রামটি কিছু উপকারী যুক্ত হওয়া সত্ত্বেও "দরকারী" কিছু করা উচিত।

মাল্টলাইন স্ট্রিং থেকে একটি খালি লাইন সরিয়ে ফেলা গণনা করা হয় না, যদি না সেই মাল্টলাইন স্ট্রিং থেকে প্রত্যাশিত আউটপুট প্রযুক্তিগতভাবে পরিবর্তন না হয় (যেমন: আপনি যদি সমস্ত ফাঁকা রেখা মিলেছে তবে ^$)।

হোয়াইটস্পেস foolery হয় না অনুমোদিত; গাড়ীর রিটার্ন, ট্যাব, স্পেস ইত্যাদি দিয়ে অদ্ভুত কাজ করবেন না


11
আমার মনে হয় আপনার হোয়াইটস্পেস বাদ দেওয়া উচিত।
নিনেনিও

17
আমি মনে করি যে হোয়াইটস্পেস হয় একটি " মান ঘুলঘুলি "
core1024

5
nneonneo বিষয়ে কথা বলছে হোয়াইটস্পেস , যা একটি ভাষা যে ব্যবহার শুধুমাত্র তার সিনট্যাক্স যেমন স্পেস।
কাইল কানোজ

4
"অপ্রত্যাশিত কার্যকারিতা" একটি খুব ভাল বাক্য।
কাজ

3
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ ছদ্মবেশী চ্যালেঞ্জগুলি এখন আর এই সাইটে অন টপিক নয়। meta.codegolf.stackexchange.com/a/8326/20469
বিড়াল

উত্তর:


62

জাভাস্ক্রিপ্ট

"হ্যালো, ওয়ার্ল্ড!" দিয়ে একটি সতর্কতা পপআপ খোলে যদি ফাঁকা লাইন বিদ্যমান থাকে, অন্যথায় "0" সতর্ক করে।

(function(){
    alert(~(arguments.callee+[]).indexOf('\n\n') && "Hello, World!");

})();

ডেমো

ব্যাখ্যা:

arguments.callee স্ব-সম্পাদনকারী বেনামি কার্যের একটি উল্লেখ।

ফাঁকা অ্যারে ( []) যুক্ত করে ফাংশনটিকে স্ট্রিংয়ে কাস্ট করে, যা আপনাকে তার উত্স কোড দেয়।

indexOf-1স্ট্রিংটি পাওয়া না গেলে ফিরে আসে

কিছুটা অপারেশন না করে পারফরম্যান্স করা ( ~) ফলাফল -1রূপান্তরিত হয় 0যা একটি মিথ্যা মান।


2
এ কী ছলনা ?!
ক্রোল্টন

1
arguments.calleeফাংশনের উত্স রয়েছে।
ম্যাথু

2
নোট করুন যে এটি আর কঠোর মোডে কাজ করে না (যা সবচেয়ে আধুনিক কোড ব্যবহার করবে)। কঠোর মোড ব্যবহার নিষিদ্ধ করে arguments.callee
ড্যানিয়েল লো নিগ্রো

1
@ মিশেল: না, অনুমানটি সঠিক ফর্ম্যাট সম্পর্কে কিছুই বলে না। আসলে , চারপাশে এমন ইঞ্জিনগুলি চলছে যেগুলি সাদা স্থান সংরক্ষণ করে না।
বার্গি

2
@ ড্যানিয়েললনিগ্রো আপনি কেবলমাত্র ফাংশনটির এক্সপ্রেশনটিকে একটি নাম দিতে পারেন এবং এটির পরিবর্তে এটি ব্যবহার করতে পারেন arguments.callee। এমনকি এটি খাটো করে তোলে।
একটি বিড়াল

42

সি

এই ম্যাজিক 8-বল প্রোগ্রামটি ফাঁকা লাইন ছাড়াই এখনও কাজ করবে, তবে এটি আরও কিছুটা নির্ধারক হবে - নিরপেক্ষ উত্তরগুলির কোনওরই আউটপুটে উপস্থিত হবে না।

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
  int x, t;
  char *quotes[] = {
        // Positive :-)
        "It is certain", "It is decidedly so", "Without a doubt", "Yes definitely", "You may rely on it",
        "As I see it, yes", "Most likely", "Outlook good", "Yes", "Signs point to yes",
        // Indifferent :-\

        "Reply hazy try again", "Ask again later", "Better not tell you now", "Cannot predict now", "Concentrate and ask again",
        // Negative :-(
        "Don't count on it", "My reply is no", "My sources say no", "Outlook not so good", "Very doubtful" };
  srandom(time(NULL)); // Initialize random number generator
  x = random() % (sizeof(quotes) / sizeof(char*)); // Choose a random outcome
  printf("The Magic Eight Ball says...\n%s\n",quotes[x]);
  return 0;
}

ব্যাখ্যা

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


51
আমি +1 করেছি, তবে সি মন্তব্যগুলি ব্যাকস্ল্যাশের সাথে শেষ হতে দেখলে এটি একটি আদর্শ লুফোল, আইএমও হতে শুরু করেছে।
টিম এস

2
এটি এই "স্ট্যান্ডার্ড লুফোলস" পোস্টের একটি রেফারেন্স ছিল , তাই সম্ভবত আক্ষরিক অর্থে একটি "লুফোল" নয়।
টিম এস

5
@TimS। আপনি যদি এই "সমাধান" দিয়ে বিরক্ত হন তবে কেন আপনি উত্সাহ দিয়েছেন?
জন ডিভোরাক

8
ব্যাকস্ল্যাশ-দ্য নেক্সট-লাইন-ইন-এ-মন্তব্যের উত্তরগুলি (ট্রিগ্রেফ বা কোনও ট্রিগ্রাফ) আমাকে ইচ্ছে করছে যে আমার সুনাম 125 ছিল 125 আমি তাদের দেখতেই থাকি এবং তারা ভয়ঙ্করভাবে পুনরাবৃত্তি হতে শুরু করে, সম্পূর্ণরূপে দেখা যায়, এবং আর চালাক বা মজার হয় না। (যা তাদের এখানে ব্যবহারের মতো দুর্ভাগ্যজনক, কারণ এখানে তারা
দুষ্কৃতিকারীর

4
@Jan মান হয়ে শুরু দীর্ঘ মান / ধরা হিসাবে একই নয় ... তার ব্যবহার এখানে মোটামুটি চালাক, এটা না চেহারা আউট অফ প্লেস (কিছু অসদৃশ আমি দেখেছি, যা অস্বাভাবিক এ অক্ষর (গুলি) আছে কোনও মন্তব্যের সমাপ্তি বা মন্তব্য-প্রারম্ভের অক্ষর (গুলি) দিয়ে তাদের মন্তব্যগুলি শেষ করার জন্য কোনও অস্বাভাবিক কিছু করার জন্য)। সুতরাং: আমি সমাধানটিকে upvote করছি, এর কৌশল অবিরত ব্যবহার না করে।
টিম এস

37

Befunge-93

v
&
&
+
#

.
@

আমার প্রথম বেফঞ্জ প্রোগ্রাম :)

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

ব্যাখ্যা:

vকোডটি কার্যকর করার জন্য নিম্নমুখী দিক নির্ধারণ করে একটি
&পূর্ণসংখ্যক পাঠ
+করে সংখ্যাগুলি একসাথে
#এড়িয়ে যায় পরবর্তী কমান্ড
.স্ট্যাক থেকে একটি পূর্ণসংখ্যা প্রিন্ট
@করে প্রোগ্রামটি শেষ হয়

যেমন লেখা আছে, #খালি লাইনটি এড়িয়ে যায় এবং এর সাথে সংযুক্ত থাকে .। আপনি যখন খালি লাইনটি মুছবেন তখন কিনুন .

Http://befunge.aurlien.net/ এ একটি দুর্দান্ত দোভাষী আছে বলে মনে হচ্ছে


আহ, চালাক এক।
seequ

1
বেফুঞ্জ 98 এটিও করে। ভাল চিন্তা. এবং এই দোভাষীর কিছু সুবিধা রয়েছে (আমি আপনার বেশি ব্যবহার করি নি, সুতরাং এর সুবিধাগুলি আমি জানি না)।
জাস্টিন

32

রুবি / শেল

​​​​​​
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#!   The Amazing Integer Adder             !
#! Adds 1 and 1, and displays the result   !
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

p 1+1

যদি একটি নতুন লাইন শীর্ষে থাকে তবে ঠিকঠাক কাজ করে, অন্যথায় প্রথম মন্তব্য লাইনটি শেল দ্বারা একটি ত্রুটিযুক্ত শেবাং হিসাবে ব্যাখ্যা করা হয়।


3
এটি হয় সর্বদা কাজ করবে না সর্বদা কাজ করবে না? উদাহরণস্বরূপ, আপনি যদি এটি হিসাবে চালিয়ে যান তবে ruby youranswer.rbএটি শেবাংকে খুঁজবে না কারণ এটি ইতিমধ্যে রুবি ইন্টারপ্রেটারে চালিত হচ্ছে, তবে আপনি যদি এটি চালিয়ে যান তবে ./youranswer.rbকোনও শেবাং নেই বলে এটি একেবারেই চালিত হবে না ..
পুনর্নির্মাণ মনিকা

6
কমপক্ষে আমার রুবির সাথে, শেবাংকে এটি হিসাবে চালানো সত্ত্বেও সম্মান জানানো ruby youranswer.rbহয় যা ফাইলটিতে প্রয়োজনীয় কমান্ড-লাইন সুইচ সেট করতে দরকারী useful সুতরাং আমি যে নতুন লাইন পাচ্ছি তা ছাড়াইruby: no Ruby script found in input (LoadError)
হিস্টোক্র্যাট

29

scala

case class IntWrapper(i: Int)

{
  val answer = (IntWrapper(0) /: (1 to 100)){(x, y) => IntWrapper(x.i + y)} // Add up ints
  println(s"Sum of wrapped integers is $answer")
}

আপনি যদি ফাঁকা লাইনটি সরিয়ে ফেলেন তবে কোনও আউটপুট মুদ্রণ করা হবে না। যা সর্বোত্তম জন্য, কারণ আপনার স্ট্যাকটি যদি আপনি আসলে ডাকেন তবে উপচে পড়বে IntWrapper

এটি স্কালার সেমিকোলন অনুকরণের এক কোণার কেস। ফলস্বরূপ কোডটি বৈধ হবে যখনই সাধারণত নিউলাইনগুলি একটি সেমিকোলন পায়। তবে স্কালাল ডেভস লোকদের মিশরীয় বন্ধনী ব্যবহার করতে বাধ্য করতে চায় নি , সুতরাং একটি শ্রেণির সংজ্ঞার জন্য বন্ধনীগুলি অবিলম্বে লাইনে লাগানো বৈধ - কোনও সেমিকোলন যুক্ত হয় না, যদিও একটি হতে পারে। তবে, একটি ফাঁকা রেখা বর্গ সংজ্ঞা থেকে বন্ধনীকে তালাক দেয়। ফাঁকা লাইন সরানোর সাথে সাথে কোডটি ক্লাস সংজ্ঞা এবং একটি ব্লক হয়ে কনস্ট্রাক্টরের ক্লাস সংজ্ঞাতে পরিবর্তিত হয় - এবং সেখানে পুনরাবৃত্তাকারী কনস্ট্রাক্টর!


6
মিশরীয় বন্ধনী জোর না করার জন্য তাদের মধ্যে খুব সুন্দর। তবে আমার মতে সেমিকোলন ইনফেরেন্স একটি খারাপ ধারণা।
অলমো

সেমিকোলন অনুমান একটি খারাপ নাম পায়, মূলত জাভাস্ক্রিপ্টের কারণে। আপনি যদি ভাষাটি মনে রেখে ডিজাইন করেন তবে এটি কিছুটা কম বেদনাদায়ক (উদাহরণস্বরূপ পাইথনে কেউ এটির জন্য অভিযোগ করে না)। দুর্ভাগ্যক্রমে স্কালায় এমন বেশ কয়েকটি বৈশিষ্ট্য অন্তর্ভুক্ত ছিল যা সেমিকোলন অনুক্রমের সাথে দুর্দান্ত খেলেন না। এটি রয়েছে, এবং পোস্টফিক্স অপারেটরগুলি (যা আমি আমার উত্তরে ব্যবহারের জন্য প্ররোচিত হয়েছিল, তবে এটি কিছুটা উত্তীর্ণ)।
জেমস_পিক

2
@ জামেস_পিক: এএফাইক পাইথনে এটি সম্পর্কে কেউ অভিযোগ করে না কারণ পাইথনে এটির অস্তিত্ব নেই। জেএসে, সেমিকোলনগুলি সিনট্যাক্সের প্রয়োজনীয় অংশ এবং নির্দিষ্ট পয়েন্টে inোকানো (অনুমান) করা যেতে পারে। পাইথনে, সেমিকোলনগুলি সিনট্যাক্সের প্রয়োজনীয় অংশ নয়, তবে এটি বিকল্পভাবে ব্যবহার করা যেতে পারে। এটি একটি বড় পার্থক্য।
ম্যাসন হুইলারের

এটি একটি বড় পার্থক্যের মতো মনে হতে পারে তবে স্কালা যদি কয়েকটি বৈশিষ্ট্য সরিয়ে ফেলে, যা বর্তমানে বিবৃতি সীমানাকে অস্পষ্ট করে তোলে তবে এটি জাভাস্ক্রিপ্টের বেড়ের পাশ থেকে পাইথনের দিকে চলে যাবে।
জেমস_পিক

1
@ জেমস_পিক: অজগরটিকে কী আলাদা করে তোলে তা হল যে নিউলাইনটি বিবৃতিটি বন্ধ করে দেয় যদি না পালিয়ে যায় বা কোনও ধরণের বন্ধনীর ভিতরে থাকে না। এটি কোনও সম্পূর্ণ / অসম্পূর্ণ নিয়ম নেই।
জান হুডেক

27

GolfScript

~{.@\%:

}do;

দুটি শূন্য নয় পূর্ণসংখ্যার জিসিডি গণনা করে। ফাঁকা লাইন সরিয়ে ফেলা প্রোগ্রামটি ভেঙে দেয়।

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

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

এটি ইউক্লিডিয়ান অ্যালগরিদমের একটি গল্ফস্ক্রিপ্ট বাস্তবায়ন:

      # STACK: "15 24"
~     # Interpret the input string.
{     # STACK: 15 24
  .@  # Duplicate the topmost integer and rotate the other on top of both copies.
      # STACK: 24 24 15
  \   # Swap the topmost integers.
      # STACK: 24 15 24
  %   # Calculate the modulus.
      # STACK: 24 15
}do   # If the modulus is non-zero, repeat the loop.
;     # Discard the last modulus.

একটি ছোট সমস্যা আছে:

{}doএটি সত্যবাদী কিনা তা পরীক্ষা করতে স্ট্যাক থেকে মডিউলটি পপ করে, সুতরাং এটি লুপের শেষে নকল করতে হবে। এটি সাধারণত সম্পন্ন হয় .তবে :\n\nএকই প্রভাব রয়েছে: এটি শীর্ষস্থানীয় স্ট্যাক আইটেমটি ভেরিয়েবল এলএফ ( :\n) এ সঞ্চয় করে, তারপরে সেই ভেরিয়েবলের বিষয়বস্তুগুলিকে ঠেলে দেয়।


7
বাহ, এমনকি এটি একটি পরিবর্তনশীল? : ও
আদিতসু

@aditsu: শুধুমাত্র #, {এবং }পরিবর্তনশীল নাম সেগুলিও সিনট্যাক্স নির্মাণ করে চলেছি অংশ ব্যবহার করা যাবে না। স্ট্রিং সহ অন্য প্রতিটি টোকেন ঠিক আছে।
ডেনিস

@ ডেনিস বাহ! টিআইএল এমনকি স্ট্রিংগুলি ভেরিয়েবল হিসাবে ব্যবহার করা যেতে পারে। এটি কি কোনও কিছুর জন্য কার্যকর?
জন ডিভোরাক

@JanDvorak: একপাশে কিছু প্রান্ত বিষয় (palindromic কোড, থেকে underhanded কোড , সম্ভবত না আমি মনে করি শুধু এই একটি (হয়। নথিভুক্ত ) কিভাবে GolfScript অনুবাদক টোকেন মধ্যে কোড splits পাশ প্রভাব।
ডেনিস

@ ডেনিসের মানে কি এই যে .:-1ইনপুটটি -1মাইনাস সাইন ইন করে সঞ্চয় করে না? হুম ...
জন ডিভোরাক

23

মিডিয়াউইকি টেম্পলেট সিনট্যাক্স

টেমপ্লেট সংজ্ঞায়িত করুন: Foo as

{{{a

b|Uh-oh!}}}

অন্য পৃষ্ঠায়,

{{Foo|a

b=Works!}}  <!-- outputs "Works!" -->

{{Foo|a


b=Works!}}  <!-- outputs "Uh-oh!" -->

{{Foo|a
b=Works!}}  <!-- outputs "Uh-oh!" -->

মিডিয়াউইকিতে, প্যারামিটারের নামগুলিতে নিউলাইনগুলি থাকতে পারে।


1
ভাল লাগল, এটি আমি যা খুঁজছিলাম তার পংক্তির পাশাপাশি এটির মতো অদ্ভুত প্রান্তের কেস।
নাফটুলি কে

16

ল্যাটেক্স (ব্যাকরেফ)

নিম্নলিখিত ল্যাটেক্স কোডটি উদ্ধৃতি ব্যবহার করে এবং উদ্ধৃতিটিতে পৃষ্ঠাগুলির একটি তালিকা থাকে, যেখানে প্রবেশটি প্রশংসিত হয়। এখানে এটি প্রথম পৃষ্ঠা। প্যাকেজটি hyperrefপিডিএফ লিঙ্কগুলিও যুক্ত করে, পৃষ্ঠার পিছনের রেফারেন্সটি লাল, উদ্ধৃতি লিঙ্কটি সবুজ।

\documentclass{article}
\usepackage[colorlinks,pagebackref]{hyperref}
\begin{document}
Donald E. Knuth is the inventor of \TeX~\cite{knuth}.
\begin{thebibliography}{9}
\bibitem{knuth}
Donald E. Knuth: \textit{The \TeX book}; Addison Wesley, 1984.

\end{thebibliography}
\end{document}

ফল

তবে ল্যাটেক্সের খালি লাইনের প্রয়োজন নেই, খালি লাইনটি অতিরিক্ত অতিরিক্ত দেখায় এবং উদাহরণটি hyperrefখালি লাইন ছাড়াই কাজ করবে :

\documentclass{article}
\begin{document}
Donald E. Knuth is the inventor of \TeX~\cite{knuth}.
\begin{thebibliography}{9}
\bibitem{knuth}
Donald E. Knuth: \textit{The \TeX book}; Addison Wesley, 1984.
\end{thebibliography}
\end{document}

হাইপারেফ ছাড়াই ফলাফল

তবে লিঙ্কগুলি এবং পিছনের রেফারেন্স চলে গেছে, এইভাবে আমরা সেগুলি পুনরায় রাখি:

\documentclass{article}
\usepackage[colorlinks,pagebackref]{hyperref}
\begin{document}
Donald E. Knuth is the inventor of \TeX~\cite{knuth}.
\begin{thebibliography}{9}
\bibitem{knuth}
Donald E. Knuth: \textit{The \TeX book}; Addison Wesley, 1984.
\end{thebibliography}
\end{document}

তবে এখন উদাহরণটি নষ্ট হয়ে গেছে এবং এটি আর সংকলন করবে না :

Runaway argument?
 Donald E. Knuth: \textit {The \TeX book}; Addison Wesley, 1984. \end \ETC.
! File ended while scanning use of \BR@@bibitem.
<inserted text> 
                \par 
<*> knuth

?

কি হলো? প্যাকেজ hyperref(বা আরও সুনির্দিষ্ট প্যাকেজ backref, যা দ্বারা লোড করা হয় hyperref) পিছনে রেফারেন্স তালিকা যুক্ত করতে গ্রন্থগ্রন্থের এন্ট্রি শেষে পেতে চায়। তবে ল্যাটেক্সের বাক্য গঠনটি কেবল প্রবেশের সূচনা সরবরাহ করে, শেষটি \bibitemযে কোনও জায়গায় হতে পারে। এই জরুরি অবস্থায় প্যাকেজটিতে backrefএকটি বিধিনিষেধ যুক্ত হয়েছে যা \bibitemখালি লাইন দিয়ে প্রবেশটি শেষ করতে হবে। তারপরে প্যাকেজটি \bibitemপ্রবেশের শেষে পিছনে উল্লেখগুলি পুনরায় সংজ্ঞায়িত করতে পারে।

যেহেতু খালি লাইনটি অনুপস্থিত, টেক্স এটি অনুসন্ধান করে চলেছে, তবে পরিবর্তে ফাইলটির শেষ সন্ধান করেছে এবং ত্রুটির বার্তা জারি করে।


12

সি (আধা-অবরুদ্ধ)

এই ছোট প্রোগ্রামটি কমান্ড লাইনে একটি সংখ্যা নিয়েছে এবং এর ফ্যাক্টরিয়াল গণনা করে। তবে এটিতে রানটাইম যাচাইয়ের জন্য কাটিং-এজ এআই কার্যকারিতা রয়েছে যা হোয়াইটস্পেস এবং ফাঁকা লাইনের সঠিক ব্যবহার সহ সংস্থার কোডিং মানগুলি অনুসরণ করা হচ্ছে। একটি ফাঁকা লাইন অপসারণ অপর্যাপ্তভাবে রক্ষণাবেক্ষণযোগ্য প্রোগ্রামটি প্রত্যাখ্যান করতে অ্যালগরিদমকে ট্রিগার করবে।

কোনও লাইনের ধারাবাহিকতা বা কোথাও ট্রিগারস নেই। আমি বিশ্বাস করি এটি বৈধ এএনএসআই সি 99।

জড়িত উন্নত গণিতের কারণে, আপনি যদি সংকলন করেন তবে gccব্যবহার করতে ভুলবেন না -lm

#include <setjmp.h>
#include <stdio.h>
#define max(x,y) ((x<y?y:x))
#define swap(x,y) ((x^=y,y^=x,x^=y))
#include <stdlib.h>
#include <math.h>
#define vfry(x,p,z,y,i) (!!y&((z##z##L##I##p##x##z##z)))
#define NDEBUG

/* 
 * Proper use of whitespace is essential!
 * Please do not remove any blank lines.
 */

const double E = 2.71828182845904523536;

int vrfy(double epsilon, int magic, const char *key, long int L) {
  /* You are not expected to understand this */
  double x=284.2891,u=2.34e56;
  while (rand()+magic*pow(epsilon,sin(x-E))!=log(u*L))
    x*=vrfy(1.0/epsilon,(int)u,&key[swap(L,magic)],L++);
  return u/lgamma(x);
}

int main(int argc, char *argv[]) {
  int N_=831293812; /* do not change, see Knuth 1987 */
  if (!vfry(E, N,_, "M=&;VT=I!9", 0xfe86ddcaL)) {
    fprintf(stderr, "Code standards violation detected!\n");
    abort();
  }
  if (argc < 2) {
    fprintf(stderr, "Usage: %s n\nComputes n!\n", argv[0]);
    exit(1);
  }
  int m=1, n=atoi(argv[1]), i;
  for (i=1; i <= n; i++)
    m *= i;
  printf("%d! = %d\n", n, m);
  return 0;
}

ভক্ষক

জটিল vrfyফাংশনটি কখনও বলা হয় না, বরং মজাদার চেহারার vfryম্যাক্রো। প্রিপ্রোসেসরের স্ট্রিং কনটেনটেশন বৈশিষ্ট্যটির ব্যবহারটি সত্যটি ছদ্মবেশ ধারণ করে যে আমরা সত্যই কেবলমাত্র এর সামঞ্জস্য পরীক্ষা করছি __LINE__


এছাড়াও কাজ করেtcc -run
vi।

এটি সত্যই ঝরঝরে। যে vfryফাংশন সংজ্ঞা প্রসারিত করা হয় না সত্যিই আমাকে তুলবেন।
ফুজজেক্সএল

11

সি

এই প্রোগ্রামটি প্রত্যাশিত হিসাবে (মন্তব্যগুলিতে বর্ণিত হিসাবে) কাজ করে যদি না খালি রেখাটি foo = 5;সরিয়ে না দেওয়া হয়।

দুঃখের বিষয়, আমি প্রায় একবার প্রোডাকশন কোডে ঠিক এর মতো একটি ত্রুটির মুখোমুখি হয়েছি।

#include <stdio.h>

int main()
{
    int foo = 0;

    #define FROB(x) do {                                            \
        x++;                                                        \
        printf("%d\n", x);                                          \
    } while (0);                                                    \

    foo = 5;
    FROB(foo); /* prints 6 */
    FROB(foo); /* prints 7 */
    FROB(foo); /* prints 8 */

    return 0;
}

এই উদাহরণটি do { ... } while (0)ম্যাক্রোতে একাধিক বক্তব্য তৈরি করার জন্য আইডিয়মটি ব্যবহার করে ( https://stackoverflow.com/questions/257418/do- દરમિયાન - 0- কি-is - it - good- জন্য দেখুন )। এটি #defineএকাধিক লাইনের উপরে ছড়িয়ে দিতে ব্যাকস্ল্যাশ অক্ষরটিও ব্যবহার করে , সুবিধামতভাবে দৃষ্টির বাইরে লাইনযুক্ত। তবে এটি দুটি ধরণের ভুলও করে:

  • পরে একটি সেমিকোলন রয়েছে while (0), যখন আইডিয়ামটি সাধারণত এটি বাদ দেয়
  • এর চূড়ান্ত লাইনের পরে একটি ব্যাকস্ল্যাশ রয়েছে #define

এটি স্থানে রেখে, ফাঁকা রেখাটি সরিয়ে দেওয়ার আগে foo = 5;সেই অ্যাসাইনমেন্টটি মৃত্যুর পরে কার্যকর করা হয় printf, তবে ম্যাক্রোর প্রতিটি অনুরোধের পরেও FROB। ফলস্বরূপ, ফাঁকা লাইন সরানোর পরে আউটপুটটি হ'ল:

1
6
6

1
মূলত একটি ডুপ্লিকেট codegolf.stackexchange.com/a/31662/20356
seequ

@ দ্যারেয়ার তবে এটি কম স্পষ্ট।
Ypnypn

6
আপনি কেবলমাত্র ডানদিকে খুব স্পষ্টতই ভাসমান এই ব্যাকস্ল্যাশগুলি না তাকালে এটি কেবলমাত্র কম স্পষ্ট। (তবে তারা যেহেতু ডানদিকে খুব স্পষ্টতই সেখানে
ভাসছেন


6
প্রযুক্তিগতভাবে বলতে গেলে @ কোয়াডমাস্টার এক্স এলআই, সুনির্দিষ্ট হওয়ার জন্য তারা সবাই ন্যায়সঙ্গত - ডান-ন্যায়সঙ্গত।
চিহ্নিত করুন

9

সি / সি ++

int main(){

    return __LINE__ - 3;
}

সাফল্য দেখায় এবং জন্য একটি বাস্তবায়ন হিসেবে ব্যবহার করা যাবে সত্য । যদি খালি লাইনটি সরানো হয় তবে আপনি এটির পরিবর্তে মিথ্যা প্রয়োগের জন্য এটি ব্যবহার করতে পারেন ।


8

শক্তির উৎস

এই ফাংশনটি দুটি সংখ্যা যুক্ত করবে।

function add ($a, $b) {
    $numbers = @($a `

            $b)
        $numbers| measure -sum| select -expand sum
}

ফাঁকা লাইন সরিয়ে ফাংশনটি এর সাথে ব্যর্থ হতে পারে: Unexpected token '$b' in expression or statement.

ব্যাখ্যা

অ্যারে উপাদানগুলি নিউলাইন এবং / অথবা কমা দ্বারা পৃথক করা যায়। লাইন ধারাবাহিকতা অক্ষর ( `) পরে রাখার $aজন্য পৃথক করতে অতিরিক্ত নিউলাইন প্রয়োজন $aএবং $b। অন্যথায়, দোভাষা কোডটি কোড হিসাবে দেখায় $numbers = @($a $b)(কোনও উপাদান বিভাজক নয়)।


7

TeX

\noindent\everypar{$\bullet$ hello }

world
\bye

খালি লাইন ছাড়া "হ্যালো" মুদ্রিত হয় না।

ব্যাখ্যা

টেক্সটি খালি রেখাকে অনুচ্ছেদের বিরতি হিসাবে বিবেচনা করে এবং \everyparনতুন অনুচ্ছেদের শুরুতে কার্যকর করা হয়।


6

জাভা

import java.util.Scanner;

public class BlankLine
{
    public static void main( String[] args )
    {
        //This calculates 2^ given number
        //if you remove blank line after the next line it will always print 1
        int x = new Throwable().getStackTrace()[0].getLineNumber();

        int y = new Throwable().getStackTrace()[0].getLineNumber() - x;
        System.out.println("Number:");
        Scanner scanner = new Scanner(System.in);
        int r = 1;
        int n = scanner.nextInt();

        for(int i = 0; i < n; i++){
            r *= y;
        }
        System.out.println("2^number: "+r);
    }
}

x হ'ল বর্তমান লাইন নম্বর, y হ'ল বর্তমান লাইন নম্বর - x। যদি তাদের মধ্যে ফাঁকা রেখা থাকে তবে ফলাফলটি 2 হয় So সুতরাং কোডটি 2 ^ সংখ্যা গণনা করে।


1
+1 কেবল কারণ এটি জাভা, যদিও কোড পর্যালোচনার ঘন ঘন দর্শনার্থী হিসাবে আমি ভাবছি আপনি কেন ব্যবহার করছেন না Math.pow?
সাইমন ফারসবার্গ

কারণ আমার কোড কিছু করতে হবে। 2 নম্বর যুক্ত করা খুব সহজ।
বারটেক্স 2 এক্স

ব্যবহার Math.powএবং ফলাফল প্রিন্ট আউট হয় কিছু কাজ তাই না?
সাইমন ফারসবার্গ

এবং এখন আমি বুঝতে পেরেছি যে আমি সত্যিই ব্যবহার করতে পারি M ম্যাথ.পো আমি জানি না কেন আমি ভাবছিলাম যে আমাকে সেভাবেই করা উচিত ... মাতবে আমি মুর "স্নিগ্ধ" উপায়ে এটি করতে চেয়েছিলাম।
বারটেক্স 2 এক্স

7
আপনি অনেক বেশি গল্ফ করছেন। এর পরিবর্তে আপনার কোড পর্যালোচনাটি ঘুরে দেখা উচিত যেখানে আমরা জিনিসগুলি সঠিকভাবে করি!
সাইমন ফারসবার্গ

6

পার্ল 5

print(<<""
Hello, World!

);

এই কোড মুদ্রণ Hello, World!। ফাঁকা লাইন সরানো পরিবর্তে একটি বাক্য গঠন ত্রুটি দেয়।

ব্যাখ্যা:

মাল্টি-লাইন স্ট্রিংয়ের জন্য পার্লের এখানে-ডক সিন্ট্যাক্স একটি খালি টার্মিনেটর স্ট্রিংকে অনুমতি দেয়। এটি এমনকি স্পষ্টভাবে নথিভুক্ত। ফাঁকা রেখা অপসারণের ফলে বন্ধকৃত প্রথম বন্ধনী (এবং পরবর্তী ফাঁকা রেখা পর্যন্ত সমস্ত কিছু, যদি সেখানে থাকে) একটি স্ট্রিংয়ের অংশ হিসাবে ব্যাখ্যা করা হয়, যার ফলে একটি সিনট্যাক্স ত্রুটি হয়।

আপনি যে ত্রুটি বার্তাগুলি পান সেটি বাস্তবে খুব শালীন, যেমন একটি অডব্লাল সিনট্যাক্স বৈশিষ্ট্যের জন্য। লাইনের পরে প্রোগ্রামে যদি কোনও ফাঁকা রেখা না থাকে print(<<"", পার্ল কেবল বলেছেন:

Foo.pl লাইন 1 এ EOF এর আগে কোথাও স্ট্রিং টার্মিনেটর খুঁজে পাওয়া যায় না।

যদি হয় প্রোগ্রাম শেষে একটি খালি লাইন, আপনি এই পরিবর্তে ভালো কিছু পাবেন:

ইওএফ-এ foo.pl লাইন 4-তে সিনট্যাক্স ত্রুটি
  (পলাতক একাধিক লাইনের << স্ট্রিংটি লাইন 1 থেকে শুরু হতে পারে)
সংকলনের ত্রুটির কারণে foo.pl কার্যকর করা বাতিল করা হয়েছে।


5

দল

@echo off
setLocal enableDelayedExpansion
set NL=^


echo Hello!NL!World

এই কোড আউটপুট Helloএবং পরবর্তী লাইনে হবে World। উভয় বা ফাঁকা লাইনগুলি মুছে ফেলা হলে, এটি কিছুতেই আউটপুট দেয় না।

এখানে একটি ব্যাখ্যা আছে


4

চুনি

প্রথম লাইনটি মোছা ত্রুটির কারণ ঘটবে:

line = IO.readlines($0).first.chomp if line.empty? puts 34+4 else raise "Please add a newline at the beginning of the program." end

2
আমি ত্রুটি বার্তা পছন্দ। এমন কোনও ব্যক্তির প্রতিক্রিয়া দেখতে চান যা প্রোগ্রামটি চালানোর চেষ্টা করে এবং সেই প্রতিক্রিয়া পায়।
টমসডিং

4

পাইথন

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

src = open(__file__, 'r')
code = src.readlines()
src.close()

if code[3] == '\n':
    print 'Hello World!'

এটি নিয়মিত চালানো ফিরে আসে

Hello World!

4 লাইনে ফাঁকা লাইন ছাড়া এটি চালানো, নীচের মত:

src = open(
__file__, 'r')
code = src.readlines()
src.close()
if code[3] == '\n':
    print 'Hello World!'

কিছুই ফিরে।


3

পাইথন 2.x

এই প্রোগ্রামটি ইনপুটযুক্ত স্ট্রিংয়ের পঞ্চম অক্ষরকে আউটপুট করে।

import inspect

text = raw_input()
print 'Fifth character of the string:', text[inspect.getlineno(inspect.currentframe())]

এটি কোনওভাবেই গোপন নয়। আপনি যদি খালি লাইনটি সরিয়ে থাকেন তবে এটি চতুর্থ অক্ষর এবং আপনি একটি যুক্ত করলে ষষ্ঠ অক্ষর দেয়।


3

TCL

একটি ফাংশন যা দুটি সংখ্যা যুক্ত করে (এবং নতুন লাইনটি মুছে ফেলা হয়েছে কিনা তা পরীক্ষা করে):

proc add {a b} {
    if {[llength [split [info body add] \n]] < 5} {error "function has been modified"}

    return [expr $a+$b]
}

এখানে গোপন করার মতো কিছুই নেই, যা যা বলে তা এটি করে, তাই আমি ব্যাখ্যাটি ফাঁকি দিচ্ছি না। ফাংশনটি infoআত্মবিজ্ঞানের একটি সুইস আর্মি ছুরি (অন্যান্য ভাষাগুলি যার প্রতিচ্ছবি বলে ডাকে)। info bodyকোনও ক্রিয়াকলাপের উত্স কোড দেয় (যদি সি বা অ্যাসেমব্লিতে না লেখা থাকে)।

আমাকে স্বীকার করতে হবে যে আমি জাভাস্ক্রিপ্ট সমাধান না পাওয়া পর্যন্ত এটি আমাকে স্তিমিত করেছিল।


3

সি

#include <stdio.h>


int main() {
    const char* a = "You love blank lines.";
    #define print_out(a) \

    printf("%s\n", a);
    a = "You don't seem to love blank lines";
    print_out(a);
    return 0;
}

ফাঁকা লাইন সহ, aস্থানীয় ভেরিয়েবলটি এ এবং ম্যাক্রো প্যারামিটার ছাড়াই ...


3

প্রযুক্তিগতভাবে কোনও "কোড" সমস্যা নয়, একটি সার্ভার। এটি যদি কোনও সিজিআই স্ক্রিপ্ট থেকে অ্যাপাচে প্রেরণ করা হয় (যা আপনার দয়া করে যে কোনও ভাষার সাথে উত্পন্ন করা যেতে পারে), এটি ক্লায়েন্টকে একটি HTTP প্রতিক্রিয়া প্রেরণ করবে:

HTTP/1.x 200 OK 
Content-Type: text/html; charset=UTF-8

Hello world!

অন্যদিকে, এটি ব্যর্থ হবে কারণ শিরোনামের পরে এটি ফাঁকা জায়গা হারিয়েছে।

HTTP/1.x 200 OK 
Content-Type: text/html; charset=UTF-8
Hello world!

2

জাভাস্ক্রিপ্ট

ফাংশনটি whereamiসোর্স কোডে তার নিজের অবস্থানের তুলনায় কলিং লাইনের অবস্থানের সাথে প্রতিক্রিয়া জানায়।

console.log (whereami ()) //3 line(s)  before me 


function whereami () {
    var a=function a(e){try{to}catch(c){for(var d=c.stack.split("\n"),b=0;b<d.length&&!~d[b].indexOf("a");b++);return c.stack.split("\n")[b+~~e].match(/:(\d+)/)[1]-~~window.hasOwnProperty("__commandLineAPI")}},a1=a(1),i


    i= a(2)>a(1)+4?a(1):a(1)>a1+2?a1-1:a/a1



    return ((i=(a(2)<i?i-1:a(1)>i+3?a(2)-a(1)-1:a/1)) + " line(s) "   ) + (i<a(2)?" after":(i>=a(2)?" before":"confusing")) + " me";
}


console.log (whereami ()) //3 line(s)  after me

যদি whereamiফাংশনটির কোনও ফাঁকা রেখা সরানো হয়। আউটপুট হয় NaN line(s) confusing me(লাইন যুক্ত করা এটি ভেঙে না)

এটি কেবলমাত্র iযথাক্রমে প্রথম এবং শেষ রেখার মধ্যে কতগুলি রেখা রয়েছে তা গণনা করে। যদি তারা একটি নির্দিষ্ট মানের অধীনে পড়ে। রেফারেন্স লাইন সেট করা হয়েছে NaNযা সন্তুষ্টও করতে পারে না NaN<callingLineবা হয় না NaN>=callingLine। আমি এটিকে কিছু অপঠনযোগ্য ত্রৈমাসিক অভিব্যক্তিগুলিতে কিছুটা আড়াল করার চেষ্টা করেছি।


1
কুল। আমি ব্যতিক্রম স্ট্যাকটি এর মতো ব্যবহার করার কথা ভাবিনি।
nderscore

2

পার্ল

#!/usr/bin/perl

use strict;
use warnings;

open IN, "<".$0 or die "Did not find input files!";
while (<IN>) {
        m/blabla/ && ((<IN> =~ /\}/ && print "tra-la-la...\n") || print "ti-ri-li\n");

}
close IN;

এই পার্ল স্ক্রিপ্ট স্ক্রিপ্ট ফাইলটি পড়বে এবং "ব্লেবলা" যুক্ত লাইনটির পরে কোনও বন্ধনী বন্ধনী আছে কিনা তা পরীক্ষা করবে।


2

Escript

escriptপ্রয়োগে বাগের কারণে বৈধ এসক্রিপ্টটি কমপক্ষে তিনটি লাইন দীর্ঘ হতে হবে এবং প্রথম লাইনটি শেবাং লাইন বা খালি লাইন হতে হবে। সুতরাং নিম্নলিখিত স্ক্রিপ্টের দুটি খালি লাইন থাকতে হবে যেখানে প্রথমটি প্রথমটি হতে হবে:

main(_) -> io:format("Hello world!~n", []), halt().

অথবা এটি দুটি লাইনে ভাঙতে হবে তবে এখনও প্রথম খালি রেখা থাকতে হবে।

main(_) ->
    io:format("Hello world!~n", []), halt().

অন্যথায় আপনি পাবেন

escript: Premature end of file reached

2

চুনি

print %q
2+2=

p(2+2)

প্রিন্ট করে 2+2=4তবে ফাঁকা তৃতীয় লাইন ছাড়াই একটি বাক্য গঠন ত্রুটি দেয়। %qযে কোনও অ-শব্দ অক্ষরকে স্ট্রিং ডিলিমিটার এমনকি নিউলাইন চরিত্র হিসাবে পরিবেশন করতে দেয়। সুতরাং কোডের প্রথম তিনটি লাইন আসলে print %q"2+2="বা সমান print "2+2="। যেহেতু পরে নতুন লাইনটি2+2= উদ্ধৃতি ডিলিমিটার হিসাবে ব্যবহৃত হচ্ছে, তাই এটি একটি লাইন ডিলিমিটার হিসাবেও বিশ্লেষণ করা হয় না , ততক্ষণে আপনার অন্য একটি দরকার।


1

অনিদ্রা (উভয় সংস্করণ)!

Þyoo

â

এই কোডটি একটি ints (কেন জিজ্ঞাসা করবেন না, অনিদ্রা অদ্ভুত) প্রিন্ট করে। যদি আপনি ফাঁকা লাইনটি সরিয়ে থাকেন তবে এটি পরিবর্তে একটি pr মুদ্রণ করে।

যাইহোক প্রথম পত্রটি একটি কাঁটাযুক্ত


1
হুররে, কাঁটা! যুগে যুগে এই চরিত্রটি দেখেনি, +1।
অ্যাডিসন ক্র্যাম্প

0

সি ++

এটি একটি ক্লাসিক এবং বরং বোবা কৌশল। আপনি যখন দেখবেন তখন এটি কী তা আপনি জানতে পারবেন, এটি কেবলমাত্র এখানে সমাপ্তির জন্য। যেমন, আমি এটি একটি সম্প্রদায়ের উইকি উত্তর হিসাবে চিহ্নিত করছি।

int main() {
    //This program won't work without the next line, why??/

    return 1;
}

কেন এই কাজ করে


13
এটি আসলে একটি ফাঁকফোকর।
এমএমএইচএম

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

1
এই উত্তর দুটি কারণে ভুল। প্রথমটি এর ??/অর্থ \​, এর ??//অর্থ \/, এবং লাইনটি শেষ না হওয়ায় \​কোনও লাইন ধারাবাহিকতা নেই। দ্বিতীয়টি হ'ল কার্যকর করা হয় কিনা নির্বিশেষে আচরণটি হুবহু একই রকম return 0;হয়, কারণ যখন সম্পাদন mainসমাপনীতে পৌঁছায় তখন এটি স্ট্যান্ডার্ড আচরণ }
এইচডিভি

@hvd সেখানে আমি এটা ঠিক করেছি.
অ্যারেনাস

3
@ ক্রা I know people always use this in these kinds of questionএজন্যই আমরা এটিকে মানক লুফোল তৈরি করেছি
আন্ডারগ্রাউন্ডোমোরিয়েল

0

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

<body>
<script>
[null, function(){alert("GIVE ME MY LINE BACK")}, function(){alert("2 + 2 = " + (2+2))}][document.body.innerHTML.split("\n\n").length]()

</script>
</body>

এটি হ'ল সীমান্তের নিয়ম ভঙ্গ। প্রযুক্তিগতভাবে জাভাস্ক্রিপ্টের একাধিক স্ট্রিং নেই, এটি কেবল কারণেই এটি কাজ করে।

অন্য স্ক্রিপ্ট ট্যাগগুলিতে হস্তক্ষেপ না করে আপনার কোনও স্ক্রিপ্ট ট্যাগে একটি বাক্য গঠন ত্রুটি থাকতে পারে কারণ কেবলমাত্র পৃষ্ঠাটিতে কোনও ত্রুটি থাকলেই এটি ইতিবাচক ফলাফল দেখায়। ত্রুটিটি দ্বিতীয় সতর্কতাটিকে গুলি চালানো থেকে বাধা দেয় কারণ এটি একই স্ক্রিপ্ট ট্যাগে রয়েছে।

<body>
<script>
window.onerror=function(){
  alert("2 + 2 = " + (2+2));
}
</script>
<script>
var a = "\

";
alert("GIVE ME MY LINE BACK!");
</script>
</body>

0

চুনি

puts (% #{ARGV[0].to_i + ARGV[1].to_i}

)

রহস্যটি হ'ল নতুন লাইনটি আসলেই একটি ট্যাব, তারপরে একটি নতুন লাইন। আমি জানি না এটি গণনা করা হয়েছে তবে আমি ভেবেছিলাম এটি ক্লিভার। এরপরের চরিত্রটিও %একটি ট্যাব তবে কোনও কারণে এটির মতো দেখা যায় না। আমি স্ট্রিং তৈরির জন্য রুবির শতাংশ স্বরলিপি ব্যবহার করছি, এটি স্ক্রিপ্টে পাস হওয়া প্রথম 2 টি যুক্তি যুক্ত করে। এখানে আরও রয়েছে: http://teohm.com/blog/2012/10/15/start-using-ruby-percent-notation/


এটি আসলে গণনা করা হয় না, নির্দেশাবলীটি পড়ুন: "কোনও সাদা জায়গা নয়" " যথাযথভাবে একজন \nউপস্থিত থাকা উচিত এবং প্রত্যাশামুলকভাবে প্রোগ্রামটির কাজ করার জন্য এটি গুরুত্বপূর্ণ।
নাফতুলি কে

আহ ঠিক আছে :( ভাল আমি চেষ্টা করেছিলাম
অ্যাডিসন

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