মুদ্রণ / আউটপুট বিবৃতি নিজেই লাইন নম্বর আউটপুট করতে কোডের একটি অংশ লিখুন ("হ্যালো ওয়ার্ল্ড, লাইন এক্স থেকে!" আকারে)


25

চ্যালেঞ্জ

প্রকৃত মুদ্রণ বিবৃতিতে সোর্স কোডে লাইন নম্বরটি Hello World, from line X!কোথায়, এমন একটি প্রোগ্রাম লিখুন X

নিয়ম

  • এ প্রসঙ্গে আমরা চাই প্রথম মন্তব্যটির স্ট্রিং আউটপুট লাইন সংখ্যা প্রদর্শিত হবেstdout
  • লাইন নম্বরটি খুঁজে পেতে আপনার স্ট্রিং কোডের মাধ্যমে স্ট্রিং (ফাইল বা কুইন) হিসাবে কেবল এড়ানো উচিত
  • যদি কোনও অতিরিক্ত শ্বেতস্থান বা বিবৃতি (যা কোডের প্রবাহকে বাধাগ্রস্ত করে না) উত্স কোডে যুক্ত হয়, তা রান-টাইমে প্রতিফলিত হওয়া উচিত (প্রযোজ্য ক্ষেত্রে সংকলনের পরে)

প্রস্তাবনা

যদি ভাষা দ্বারা সরবরাহ করা হয়, আপনি এই লক্ষ্যটি অর্জন করতে ব্যতিক্রম / স্ট্যাক ট্রেস ব্যবহার করতে পারেন। আপনার সর্বোত্তম চেষ্টা কোড যে ব্যবহার করতে পোর্টেবল বিভিন্ন সিস্টেম / বাস্তবায়নের কিন্তু নোট জুড়ে যে এই হল না প্রয়োজন। সংজ্ঞায়িত ভেরিয়েবলগুলি ব্যবহার করা যেমন __LINE__নিয়ম দ্বারা অনুমোদিত তবে নিরুৎসাহিত করা হয়।

বিজয়ী

  • এটি একটি জনপ্রিয়তা প্রতিযোগিতা (১০ ই জুন, ২০১৪ এ শেষ হয়েছে), যেখানে সম্প্রদায়ের দ্বারা সর্বাধিক ভোট দেওয়া উত্তরটি বর্তমান ভোটের ভিত্তিতে বিজয়ী হিসাবে ঘোষণা করা হবে

  • ভোট দেওয়ার সময়, কারও উত্তরের সৃজনশীলতা বিবেচনা করুন, এটি কতটা বিস্তৃত বা আকর্ষণীয় । এবং প্রোগ্রামিং ভাষার ব্যবহারে অসুবিধা / সীমাবদ্ধতা


"প্রথম লাইনের নম্বর" বলতে কী বোঝ? আপনি কি বক্তব্য দিচ্ছেন যদি বিবৃতিটি একাধিক লাইন ছড়িয়ে দেয় তবে কী ঘটবে?
ব্যবহারকারী 2357112 মনিকা

@ ব্যবহারকারী 2357112 হ্যাঁ, যদি কারও কাছে মিলটি-লাইনের বিবৃতি প্রয়োজন হয় তবে যে কোনও অস্পষ্টতা সমাধান করুন resolve
ব্রেকথ্রু

শিরোনামটি খুব স্পষ্ট, তবে সম্ভবত কিছুটা দীর্ঘ।
প্রাইমো

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

1
@ মারকাসফটওয়্যার যদি এর আগে একটি লাইন যুক্ত করা হয় তবে প্রতিফলিত হওয়ার জন্য আউটপুট পরিবর্তন হবে না।
প্রিমো

উত্তর:


48

সিনক্লেয়ার বেসিক

10 PRINT "Hello world, from line ";PEEK 23621;"!"

হ্যালো ওয়ার্ল্ড, 10 লাইন থেকে!

এটি PEEKবর্তমান লাইন নম্বরটি সংরক্ষণ করে ঠিকানার মাধ্যমে আইনের দ্বারা যে কোনও লাইনের জন্য কাজ করবে , সুতরাং নিম্নলিখিতগুলিও কাজ করবে:

341 PRINT "Hello world, from line ";PEEK 23621;"!"

হ্যালো ওয়ার্ল্ড, 341 লাইন থেকে!


এবং একই টোকেন দ্বারা, টাইমেক্স / সিনক্লেয়ার বেসিক!
গাবে

আমি এই ভাষাটি জানার ভান করি না, তবে আপনি STR$যদি +সেমিকোলন দ্বারা চিহ্নগুলি প্রতিস্থাপন করেন তবে আপনি কি তা ছেড়ে দিতে পারবেন না ?
মিস্টার লিস্টার

@ মিস্টারলিস্টার হ্যাঁ, এটি অবশ্যই কাজ করবে তবে আমি সবসময় +অভ্যাস থেকেই ব্যবহার করি ।
kitcar2000

40

বেসিক

আমি মনে করি এটি যা কিছু করার জন্য বলা হয়েছিল তা করে:

10 PRINT "Hello World, from line 10!"

5
If any additional whitespace or statements (which do not interrupt the flow of the code) is added to the source code, it should be reflected at run-time (after compiling if applicable)। উদ্দেশ্য আছে। এছাড়াও, এটি উত্সের প্রথম লাইন, দশম নয়।
বিল উড্ডার

30
এটি উত্স কোডের প্রথম লাইন হতে পারে, তবে এটি এখনও 10 এর লাইন
স্কুয়ামিশ ওসিফরেজ

13
আমি বিশ্বাস করি এটি দৃ funny়ভাবে আর মজার বিভাগের আওতায় পড়ে না । এটি সত্যই অকল্পনীয় এবং উদ্বেগজনক, যদিও আক্ষরিক অর্থে এটি প্রয়োজনীয়তা পূরণ করে। এটি কেন এত উপার্জন করে? (আমি ডাউনটা দিয়েছি)
টিম এস

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

2
চালাক, তবে আমি হতাশ হব যদি এর চেয়ে আরও বেশি কিছু না করে কিছু না শেষ হয়।
আগস্ট

35

জাভা

public class Hello{
    public static void main(String[] args) {
        System.out.println("Hello World, from line "+new Exception().getStackTrace()[0].getLineNumber()+"!");
    }
}

1
আমি পছন্দ করিThread.currentThread().getStackTrace()
ক্রাঙ্কার

3
থ্রেড.জেটস্ট্যাকট্রেস () কল করে (নতুন এক্সেপশন ())। গেটস্ট্যাক ট্রেস () যদি বর্তমান থ্রেডে কল করা হয়, তবে এটি একই জিনিস
ডিএলহল

1
অদ্ভুত .... 2x একই উত্তর এবং 2 টি পৃথক উপার্জন পরিমাণ ... ( আরএনজি উত্স হিসাবে ব্যবহার করা যেতে পারে ...) (একই এখানে: কোডগলফ.স্ট্যাকেক্সেঞ্জার / এ / 30000 8/800801 )
মাস্টারএক্স 244

@ masterX244 এই দুটি উত্তর হুবহু এক নয়; এইটি getLineNumber()স্ট্যাক ট্রেসটিতে পদ্ধতিটি ব্যবহার করে , যখন আপনি উত্তরটির সাথে সংযুক্ত উত্তরটি toString()লাইন নম্বরটি সন্ধান করতে ব্যবহার করে uses
ব্রেকথ্রু

9
@ মাস্টারএক্স ২৪৪ এটিও লক্ষণীয় যে এই উত্তরটি ২ ঘন্টা আগে হাজির হয়েছিল। দ্বিতীয়বার আমি কোনও উত্তর দেখি, এটি প্রথমটির মতো আকর্ষণীয় নয়।
প্রিমো

30

পার্ল

close STDERR;
open FOOBAR,">",\$_;


print!warn,'Hello World, from line ',/(\d+)\.$/,'!';

ব্যবহার হিসাবে যথেষ্ট সংক্ষিপ্ত নয় __LINE__, তবে সম্ভবত আরও আকর্ষণীয়।

warnএটি একটি ডিবাগিং সরঞ্জাম, যা একটি বিবৃতি STDERRজারি করে, কোন ফাইলটিতে নির্দেশ করে এবং কোন লাইনে সতর্কতা জারি করা হয়েছিল ... যদি না STDERR আগে বন্ধ করা হয় বা অন্যথায় অ্যাক্সেসযোগ্য না হয়, সেক্ষেত্রে সর্বাধিক খোলা ফাইলটিতে সতর্কতা জারি করা হয় হ্যান্ডেল - এটি অননুমোদিত আচরণ। আমি নিশ্চিত নই যে এটি কোনও বৈশিষ্ট্য বা বাগ হিসাবে আরও ভাল শ্রেণিবদ্ধ করা হবে।

এখানে, STDERRবন্ধ রয়েছে এবং FOOBARখোলার পরে চিহ্নিত করা একটি নতুন ফাইল হ্যান্ডেলটি ভেরিয়েবলের দিকে যায় $_। এরপরে সতর্কতার লাইন নম্বরটি পুনরুদ্ধার করার জন্য এটি বিশ্লেষণ করা হবে, যা মুদ্রণ বিবৃতিটিতে এম্বেড করা আছে।


3
হ্যাঁ, এটি অবশ্যই আরও আকর্ষণীয় :)
তাল

27

সি ++

#include <iostream>
#include <utility>
#include <type_traits>

#define __(A,B,C,...) B##C##A
#define _(A,...) __(__VA_ARGS__, A)
template<unsigned...Is> struct v;
template<unsigned I0, unsigned... Is> struct v<I0, Is...>:v<I0-1,I0-1, Is...> {};
template<unsigned...Is> struct v<0,Is...>:std::integral_constant<unsigned, sizeof...(Is)> {};

int main() {
  std::cout << "Hello world from line " << v<_(EXTRACT,_(Q,_,E,_,$$main$$,),_(@22,,_,_),_(Z,N,L,I,_,,L),__STACK_TRACE__)>::value << "\n";
}

সরাসরি উদাহরণ


2
এটি ... উইজার্ড্রি
পালাডাইন

1
এটি কীভাবে কাজ করেছে তা দেখতে আমার অনেক সময় নিল ... অনেকগুলি লাল রঙের হেরিংস! এটা সুস্বাদু.

1
সুতরাং কিভাবে এটি কাজ করে?
0x499602D2

16

অ্যাপ্লিকেশন Lua

print("Hello world, from line "..debug.getinfo(1).currentline.."!")

16

সি শার্প

সি # 5.0 এর [CallerLineNumber]কৌশলটি করে:

using System;
using System.Linq;
using System.Runtime.CompilerServices;
namespace LineNumberConsole
{
    class Program
    {
        public static void Main()
        {
            Console.WriteLine("Hello World, from line {0}!", ToRoman(GetLineNumber()));
            Console.ReadLine();
        }

        private static int GetLineNumber([CallerLineNumber] int sourceLineNumber = 0)
        {
            return sourceLineNumber;
        }

        private static string ToRoman(int number)
        {
            // TODO: Copy some source code from http://pastebin.com/w0hm9n5W
            // Skipped here for brevity
            return number.ToString();
        }
    }
}

আউটপুট

Hello World, from line X!

রোমান অঙ্কগুলি ব্যবহারের কোনও বিশেষ কারণ?
কোল জনসন

4
মুদ্রণ লাইন 10 লাইন হয়, প্রশ্ন আক্ষরিকভাবে ব্যাখ্যা করা হয়। Xরোমান সংখ্যায় হয় 10
5urous

রোমান সংখ্যা একটি দুর্দান্ত স্পর্শ!
এনপিএসএফ 3000

15

সি

#include <stdio.h>
main(){
printf("Hello World, from line %d!", __LINE__);
}

লাইন যেমন সংজ্ঞায়িত ভেরিয়েবল ব্যবহার করে , যদিও নিয়ম দ্বারা অনুমোদিত, নিরুৎসাহিত করা হয়।
ভ্যাক্সকুইস

@ ভ্যাক্সকুইস, হ্যাঁ তবে আমার উত্তরটি
পূর্বেই

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

14

পাইথন

উদাহরণ (10 লাইন, 213 টি অক্ষর):

import sys
import traceback
lineno = None
while True:
    try:
        print 'Hello World, from line %d!' % lineno
        break
    except:
        lineno = traceback.tb_lineno(sys.exc_info()[2])
        continue

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

Hello World, from line 6!

কোড / হোয়াইটস্পেস যুক্ত হওয়ার পরে এটি কাজ করে তা দেখানোর জন্য আরেকটি উদাহরণ (এখানে অনলাইনে চেষ্টা করুন) । প্রত্যাশিত আউটপুট:

Down we go...
Gotta catch 'em all.
Down we go...
Hello World, from line 11!
Awesome!

12

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

function getLine(n) {
   try {
      to
   } catch (dat) {
      var stack = dat.stack.split('\n');
       for (var i = 0; i < stack.length; i++) {
           if (~stack[i].indexOf ('getLine')) break;          
       }
      return dat.stack.split ('\n')[i + ~~n].match (/:(\d+)/)[1] - ~~window.hasOwnProperty ('__commandLineAPI')
   }
}
//Line 12
console.log ('Hello World, from line ' + getLine(1) + ' !')

দ্রষ্টব্য: ক্রোম দেব কনসোলের মধ্যে থেকে মূল্যায়ন করা এক্সপ্রেশনগুলি একটি withবিবৃতিতে মোড়ানো হবে । সুতরাং আমাদের যদি একের পর এক লাইন হ্রাস করা দরকার


2
ডাট স্ট্যাক , হি। ফায়ারফক্সে কাজ করা যাচাই করা হয়েছে।
ব্রেকথ্রু

1
@ ব্র্যাকথ্রু :) হ্যাঁ এটি ক্রস-ব্রাউজারে কাজ করে (যদিও এটি সর্বশেষতম ক্রোম, এফএফ, আইই সহ পরীক্ষিত)। কনসোলের মধ্যে থেকে মূল্যায়ন করার সময় ক্রোমের বিশেষ চিকিত্সা প্রয়োজন, কারণ এটি প্রতিটি বিবৃতিকে একটি ধারাতে আবৃত করে with
C5H8NNaO4

2
আকর্ষণীয় তবে অস্পষ্ট ব্যবহারকারী নাম। মনসোডিয়াম গ্লুটামেট, সম্ভবত? (বিটিডাব্লু, আমি ডিএনএ এবং অ্যামিনো অ্যাসিডের বিষয়ে একটি প্রশ্ন করার কথা ভাবছি, যার মধ্যে গ্লুটামিক অ্যাসিডটি একটি))
স্তর নদী সেন্ট

@ স্টিভেরিল গুগল অনুসারে আপনি সঠিক !
kitcar2000

@ kitcar2000 সম্ভবত তবে এই সূত্রটির সাথে আরও কম-কম পরিচিত যৌগ রয়েছে: উদাহরণস্বরূপ সোডিয়াম মেথিলাস্পার্টেট বা নাইট্রোপেন্টানোয়েট।
স্তর নদী সেন্ট

11

পাইথন ঘ

import hashlib
with open(__file__) as f:
    line_num = 0
    for line in f.readlines():
        line = line.rstrip() # make it work with or without newline at the end
        line_num += 1
        if hashlib.sha256(bytes(line, "UTF-8")).hexdigest()[0:6] == 'cc46f7':
            print('Hello world, from line {}!'.format(line_num)) # cc46f7

হ্যালো ওয়ার্ল্ড, 8 লাইন থেকে!

এই স্ব-পঠন কোডটিতে একটি স্ব-রেফারেন্সিং হ্যাশ রয়েছে। শেষ পংক্তির SHA256 যোগফল (শুরু শ্বেত স্পেসের সাথে এবং শ্বেত স্পেস অনুসরণ না করে) শুরু হয় cc46f7... । যখন এটি printলাইনটি হ্যাশ করে , এটি সন্ধান করে যে হ্যাশ এটি অনুসন্ধান করছে এমন যাদু মানের সাথে মেলে।


আপনি কি কেবল লাইন_নাম = টু -1 সেট করতে এবং লুপের বাইরে প্রিন্ট রাখতে এবং যাদু হ্যাশটির যাত্রায় উঠতে পারেন নি?
ডেভ

1
@ ডেভ নিশ্চিত নয় যে আমি আপনাকে অনুসরণ করি। ম্যাজিক হ্যাশ যা এই সমাধানটিকে চতুর করে তোলে।
টিম এস

আমার বিধিগুলির আক্ষরিক ব্যাখ্যার জন্য +1 :) খুব চালাক।
ব্রেকথ্রু

5
@ স্টেফান যদিও এই সাইটটি সব থেকে খারাপ অভ্যাস সম্পর্কে। ;)
টিম এস

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

9

জিএনইউ কোবল

ঠিক আছে, তারা বলেছে যে এটি করা যায় না। আসলে, আমিই বলেছিলাম যে এটি করা যায় না। এখন এটি সম্পন্ন হয়েছে এবং প্রয়োগ করা পদ্ধতিটি ব্যবহার করে একটি অপ্রচলিত ভাষা বৈশিষ্ট্য পুনরায় প্রয়োগ করা হয়েছে।

প্রশ্নটি বলে:

যদি কোনও অতিরিক্ত শ্বেতস্থান বা বিবৃতি (যা কোডের প্রবাহকে বাধাগ্রস্ত করে না) উত্স কোডে যুক্ত করা হয় তবে তা রান-টাইমে প্রতিফলিত হওয়া উচিত (প্রযোজ্য ক্ষেত্রে সংকলনের পরে)।

DISPLAYআউটপুট শুরুর কারণ হিসাবে যে কোনও পরিমাণে স্টাফ .োকানো যেতে পারে এবং এস এর পরে যে কোনও কিছুই DISPLAY"কোডের প্রবাহকে বাধা দেয়", তাই ঠিক OK

সিওবিএল একটি TRACEক্রিয়া (বিবৃতি) ব্যবহার করত যা কেবলমাত্র নির্ধারিত হওয়ার সাথে সাথে সোর্স লাইন সংখ্যাগুলি তালিকাভুক্ত করেছিল (প্রোগ্রামে লাইন নম্বরটিতে অ্যাক্সেস নেই)। যদিও সীমিত ব্যবহারের পরেও, আমি ট্র্যাকের একটি বাস্তবায়ন অন্তর্ভুক্ত করেছি।

   ID Division.
   Program-ID. HIWHERE.
   ENVIRONMENT DIVISION.
   configuration section.
          source-computer. TinkerToy with debugging mode.
   Procedure Division.
   Declaratives.
   Debug-Declaratives Section.
       Use For Debugging on a b
       .
   Debug-Declaratives-Paragraph.
       Display Debug-Line "!"
       .
   End Declaratives
       .
   Main-Program Section.
       DISPLAY "Perform"
       Display "Hello World, from line " no advancing Perform b
       display "GO TO"
       Display "Hello World, from line " no advancing GO TO a
       .
   a.
       dISPLay "Fall through"
       Display "Hello World, from line " no advancing. b.
   The-Last-bit-OF-the-PROGRAM.
       GOBACK
       .

আউটপুট হয়

Perform
Hello World, from line     18!
GO TO
Hello World, from line     20!
Fall through
Hello World, from line     23!

ভাষা লেখার ক্ষমতা এবং নমনীয়তার একটি প্রদর্শনী হিসাবে, এই উদাহরণটি একই সময়ে সমস্ত মিশ্র-কেস, সম্পূর্ণ ছোট হাতের অক্ষর এবং পুরোপুরি বড় হাতের অক্ষর ব্যবহার করে। এটি কার্যকর হয় না, যেমন প্রক্রিয়া করার সময়, সমস্ত কিছু UPPERCASE এ "ভাঁজ" করা হয়।

চলমান প্রোগ্রাম থেকে চলমান প্রোগ্রামে সোর্স লাইন নম্বরে পৌঁছানোর একমাত্র স্ট্যান্ডার্ড সিওবিএল উপায়টি একটি সাথে রয়েছে DEBUGGING DECLARATIVE। একটি মধ্যে SECTION, কঠোরভাবে একটি মধ্যে একটি অনুচ্ছেদ মধ্যে SECTION, একটি যেমন একটি এর ঘোষণামূলক আপনি বিশেষ-রেজিস্টার এক্সেস আছে DEBUG-LINE। এতে ক্রিয়া (বিবৃতি) এর উত্স রেখা-সংখ্যা রয়েছে যা একটি নির্দিষ্ট পদ্ধতি-নাম (অনুচ্ছেদ বা SECTION) এ নিয়ন্ত্রণ স্থানান্তর করে ।

সুতরাং, PERFORMবা GO TO, বা ডিবাগিং ঘোষণাপত্রে অনুচ্ছেদের সাথে "পড়ুন" SECTIONকার্যকর করা হয়।

ঠিক আছে, তবে DISPLAYনিয়ন্ত্রণের স্থানান্তর ঘটায় না।

সমস্যা নেই. নিয়ন্ত্রণের স্থানান্তর হিসাবে একই লাইনে রাখুন ।

সমস্যা, যেহেতু "যদি কোনও অতিরিক্ত শ্বেতস্থান বা বিবৃতি (যা কোডের প্রবাহকে বাধাগ্রস্ত করে না) উত্স কোডে যুক্ত করা হয়, তবে এটি রান-টাইমে প্রতিবিম্বিত হওয়া উচিত (প্রযোজ্য ক্ষেত্রে সংকলনের পরে)"।

সুতরাং, এটি একই লাইনে রাখুন তবে নিয়ন্ত্রণের স্থানান্তরের সামনে,DISPLAY দুটি অংশকে দুটি অংশে বিভক্ত করুন (মনে রাখবেন, "এই প্রসঙ্গে আমরা স্টেটমেন্টের আউটপুট দেয় এমন স্টেটমেন্টের প্রথম লাইন নম্বর চাই" ) এবং নিয়ন্ত্রণ স্থানান্তর করার আগে প্রথম অংশটি আউটপুট দেয় এবং দ্বিতীয় অংশটি DEBUG-LINEএকবার থেকে ডিবাগিং পদ্ধতির অভ্যন্তরে।

চূড়ান্ত জটিল বিটটি হ'ল "মধ্য দিয়ে পড়ুন" এর জন্য ("পদ্ধতিগুলি" PERFORMএড করা যেতে পারে, এটির লক্ষ্য হতে পারে GO TO, বা পরবর্তী লাইনটি পাশাপাশি প্রবেশ করা যেতে পারে)। এই উদাহরণস্বরূপ, DISPLAY পদ্ধতিটি সংজ্ঞায়িত করে এমন লাইনে রাখুন, তবে সংজ্ঞাটির সামনে

"পদ্ধতি" ( aএবং b) এর নামগুলি একই হিসাবে উত্স-লাইনে ফিট করার জন্য কঠোরভাবে সংক্ষিপ্ত করা হয়েছে DISPLAY। কঠোরভাবে একটি সিওবিওএল পদ্ধতি-নামটি কলাম আট থেকে কলাম ১১ পর্যন্ত কোথাও শুরু হওয়া উচিত However তবে, সিনট্যাক্সটি আজকাল, সে সম্পর্কে আরও স্বচ্ছন্দ। যে পরিমাণে আমি কোনও কোডের মতো একই লাইনে একটি পদ্ধতির নামটি সংজ্ঞায়িত করতে পারি। এমনকি কোড এম্বেড। যত্ন এবং একটি মাঝে মধ্যে পুরো স্টপ, প্রয়োজন।

ইন PROCEDURE DIVISIONপ্রতিটি পূর্ণ স্টপ দেখানো প্রয়োজন বোধ করা হয়, এবং কোন আরো।

সংকলন করতে:

cobc -x -g hiwhere.cbl

কার্যকর করতে (লিনাক্স):

COB_SET_DEBUG=Y ./hiwhere

অবশেষে, ট্র্যাকের রিটার্ন (প্রস্তুত / রিসেট ছাড়াই)।

   ID Division.
   Program-ID. tRacE.
   ENVIRONMENT DIVISION.
   configuration section.
          source-computer. TinkerToy with debugging mode.
   Procedure Division.
   Declaratives.
   Debug-Declaratives Section.
       Use For Debugging on a
       .
   Debug-Declaratives-Paragraph.
       Display Debug-Line
       .
   End Declaratives
       .
   Main-Program Section.
  *    Just append "perform a" to a single-line statement.
       DISPLAY "1" . perform a
       Display "2" . perform a
       display "3" . perform a
  *    Or prepend "perform a." for a multi-line statement, or a
  *    statement which won't "come back". 
       perform a. GOBACK
       .
   a.
       CONTINUE
       .

আউটপুট হল:

1
    17
2
    18
3
    19
    20

যেখানে 1, 2 এবং 3 তিনটি DISPLAY স্টেটমেন্ট থেকে আউটপুট পাওয়া যায় এবং 17, 18, 19 এবং 20 টি "এক্সিকিউটেবল" (ডিবাগিং না করা) লাইনগুলির লাইন নম্বর numbers


8

জাভা

বর্তমান লাইন পেতে ব্যতিক্রম স্ট্যাক ট্রেসের আচরণ ব্যবহার করে। যতক্ষণ মুদ্রণ একাধিক লাইনে জড়িত না হয় বা ক্লাসফাইলে ম্যাঙ্গেল হয়ে যায় এটি কাজ করা উচিত

public class PrittLnbr
{
    public static void main(String[] args)
    {
        System.out.println("Hello World, from line "+new Error().getStackTrace()[0].toString().split(":")[1]+"!");
    }
}



6

জাভা

public class HelloFrom {
    public static void main(String[] args) {
        System.out.println("Hello World, from line " + Thread.currentThread().getStackTrace()[1].getLineNumber() + "!");
    }
}

প্রযুক্তিগতভাবে আমি যেমন করেছি ( কোডগল্ফ.স্ট্যাকেক্সেঞ্জারএইএ / 300/800/80080 )
এক্স 244

2
সাজান, স্ট্যাক ট্রেস পেতে একটি নতুন ত্রুটি তৈরির পরিবর্তে বর্তমান থ্রেড ব্যবহার না করে। কোনও ত্রুটি নেই;)
সিনেরিস

6

পাইথন

import inspect
print ("Hello world from line %d!" % (inspect.getlineno(inspect.currentframe())))

আউটপুট

Hello World from line 2!

1
এখন পর্যন্ত সেরা পাইথন এক!
kirbyfan64sos

6

Befunge

শুধু মজাদার জন্য হয়ে গেছে।

>00g1+:00p"v"\10v  
    v-*45g00p\g <  
#v+1_$10g1vv,,,,<  
^<p000p01+<#>,,,^  
>" enil morf ,oll"v
@.,,,,,,,,,<^,"He"<

শর্তসাপেক্ষ: কোডের উপরের বামটি 0 <x <20 এবং 0 <= y <62 হতে হবে; এবং প্রথম দুটি কোষ খালি থাকতে হবে।

উদাহরণ:

                         v                  

                         0                  
                         0                  
                         0                  
                         p                  
                         0                  
                         1                  
                         0                  
                         p                  
                         >00g1+:00p"v"\10v  
                             v-*45g00p\g <  
                         #v+1_$10g1vv,,,,<  
                         ^<p000p01+<#>,,,^  
                         >" enil morf ,oll"v
                         @.,,,,,,,,,<^,"He"<

আউটপুট হবে:

হ্যালো, 10 লাইন থেকে


এটি কী ছিল জানি না, তবে আমি আপনার আউটপুট দাবিটি বিশ্বাস করি, সুতরাং +1 ;-)
ইয়াসপ

1
যারা শক্তিশালী বেফুঞ্জের শক্তিকে প্রশ্ন করেন তাদের জন্য এটি এখানে চেষ্টা করে দেখুন: quirkster.com/iano/js/befunge.html
জাস্টিন

6

সি

একটি বৈকল্পিক ম্যাক্রো ব্যবহার করে আমরা একটি মুদ্রণ ফাংশন তৈরি করতে পারি যা স্বয়ংক্রিয়ভাবে একটি স্বেচ্ছাসেবক প্রিন্টফ স্টেটমেন্টের শেষে লাইন নম্বর যুক্ত করে এবং সর্বদা স্টডআউট প্রিন্ট করে।

test.c:

#include <stdio.h>

#define printfl(format, ...) fprintf(stdout, format " From line %d\n", ##__VA_ARGS__, __LINE__)

int main() {
    printfl("Hello World! I have %d argument(s).", 1);
    return 0;
}

আউটপুট:

% ./test
Hello World! I have 1 argument(s). From line 6

দ্রষ্টব্য: প্রিন্টএফএল এখনও একটি বৈধ ভেরিয়াদিক কার্য; আপনি যদি আউটপুটটির ফর্ম্যাটটি সম্পর্কে সত্যিই আগ্রহী হন সর্বদা আমার ব্যবহারযোগ্য আক্ষরিক পরিবর্তন করতে পারেন।


এটি কেবলমাত্র যদি আপনি ধ্রুবক বিন্যাসের স্ট্রিং ব্যবহার করেন তবে কাজ করে। ফর্ম্যাট স্ট্রিংয়ের জন্য আপনি অন্য কোনও অভিব্যক্তিতে পাস করলে এটি ব্যর্থ হয়।
স্নোবডি

5

সজোরে আঘাত

#
# some comments to fill some lines...
#
echo "Hello World, from line $LINENO!"

আউটপুট

Hello World, from line 4!

@ প্রফেসরফিশ ... আমার উত্তরটি দেখানোর জন্য আমার শৈলীতে কী ভুল? আপনি আমার শিল্পকর্ম কেন চালিত করছেন তা অন্তত ব্যাখ্যা করা উচিত ... :

2
আমি কোড পরিবর্তন করেছি? আমি যদি করি, আমি দুঃখিত। আমি শুধু চিন্তিত ছিলাম অ-ব্যাশ ব্যবহারকারীদের বলতে কি সোর্স কোড ছিল পারব না এবং যা আউটপুট ছিল

1
এবং আমার ছাড়া আর এরিওনিও কেন তার মন্তব্য না করেই তার স্টাফ পরিবর্তন হচ্ছে তা পছন্দ করে? অদ্ভুত জায়গা ...

3
এটি মূলত একটি ফর্ম্যাটিং ফিক্স ছিল। এই

লাইন যেমন সংজ্ঞায়িত ভেরিয়েবল ব্যবহার করে , যদিও নিয়ম দ্বারা অনুমোদিত, নিরুৎসাহিত করা হয়।
ভ্যাক্সকুইস

5

ডি

void main ()
{
    import std.stdio;
    writefln("Hello World, from line %d", __LINE__);
}

লাইন যেমন সংজ্ঞায়িত ভেরিয়েবল ব্যবহার করে , যদিও নিয়ম দ্বারা অনুমোদিত, নিরুৎসাহিত করা হয়।
ভ্যাক্সকুইস

5

সি বা সি ++, এবং এডব্লিউকে

lineno.c:

// code or comments
// ....
#error Hello World, from line
// other code or comments

ব্যবহার:

gcc lineno.c 2>&1 | awk '{ split($0,a,":"); ; printf("%s %s!\n", gensub(".*#error ","",1), a[2]); exit; }'

আউটপুট:

হ্যালো, ওয়ার্ল্ড, 3 লাইন থেকে

নোট:

  • কোনও লিখিত কোড ফাইল ব্যবহার করে না।
  • g ++ একটি c ++ ফাইলে কাজ করবে।

4

রুবির মধ্যে বিরক্তিকর ধরনের:

puts "Hello World, from line #{__LINE__}!"

এটা প্রতারণা নয়, তাই না?


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

লাইন যেমন সংজ্ঞায়িত ভেরিয়েবল ব্যবহার করে , যদিও নিয়ম দ্বারা অনুমোদিত, নিরুৎসাহিত করা হয়।
ভ্যাক্সকুইস

1
@ ভ্যাক্সকুইস হ্যাঁ, এই জবাবটি এই উত্তরের পরে যুক্ত করা হয়েছিল ।
আজেদী 32

4

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

স্ট্যাক ট্রেস ব্যবহার করে একটি লাইন।

(function (o) { console.log("Hello World, from line " + (Error.captureStackTrace(o) || o.stack.match(/\d+/)[0] - !!__commandLineAPI) + "!"); })({});

3

গোক্ষুরা

class Program
    def main
        print 'Hello World, from line [System.Diagnostics.StackFrame(true).getFileLineNumber]!'

3

চুনি

File.write "hello.rb", "x=2\n"+"x+=1\n"*rand(rand(100))+'puts "Hello World, from line #{x}!"'
system "ruby hello.rb"
File.delete "hello.rb"

3

শক্তির উৎস

সস্তা সরানো

Function LemmeGetDatError() {
    "Too busy chuggin along"
    "Then all of a sudden, I meet a new programmer"
    "And he's all like"
    Write-Output "$(Try {"Hello World from"; Throw "error" } Catch {$_.ScriptStackTrace.Split(":")[1]})"
}

LemmeGetDatError

3

শক্তির উৎস

$l=(Get-PSCallStack | ForEach{$_.Location})[0].split(' ')[-1]; "Hello World, from line $l!"

এবং:

try{ I AM ERROR. } catch { $l=$error[0].InvocationInfo.ScriptLineNumber; "Hello World, from line $l!" }

উভয়ই এর মতো কাজ করে:

PS C:\MyFolder> .\helloworld.ps1
Hello World, from line 1!

+1, কিন্তু Write-Hoststdout লিখুন না। স্ট্রিংটি কেবল স্ট্রাউডে প্রেরণ করা হবে। উদাহরণস্বরূপ"Hello World, from line {0}!" -f (gcs| %{$_.ScriptLineNumber})[0]
রাইনেন্ট

@ রাইনেন্ট ভাল পয়েন্ট! আমি তা বিবেচনা করার জন্য আমার উত্তরগুলি আপডেট করব ...
ডার্কআজাক্স

3

পাইথন

import traceback

print 'Hello World, from line %i!' % traceback.extract_stack()[0][1]

স্বল্প ও মধুর.


3

পার্ল

আরেকটি পার্ল:

use warnings;

$SIG{__WARN__} = sub { ($line = shift) =~ s/\D//g; };

$x=$x+1; print "Hello World, form line $line!\n";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.