ফল্ট-টলারেন্ট হ্যালো ওয়ার্ল্ড (ওরফে ইন্টারভিউ)


66

আপনার সাক্ষাত্কারের শেষে, ilভিল ইন্টারভিউয়ার আপনাকে বলবে, "আমরা আমাদের সকল আবেদনকারীকে তারা কী বিষয়ে কথা বলছে তা সত্যই জানে কিনা তা দেখার জন্য একটি সংক্ষিপ্ত কোডিং পরীক্ষা নেওয়ার চেষ্টা করি। চিন্তা করবেন না; এটি সহজ And এবং আপনি যদি তৈরি করেন একটি কর্মসূচী প্রোগ্রাম, আমি আপনাকে অবিলম্বে এই কাজের প্রস্তাব করব। আপনার কাছের কম্পিউটারে বসার জন্য তিনি অঙ্গভঙ্গি করলেন। "আপনাকে যা করতে হবে তা হল একটি হ্যালো ওয়ার্ল্ড প্রোগ্রাম তৈরি করা But তবে" - এবং সে ব্যাপকভাবে গ্রিন করে "" দুর্ভাগ্যক্রমে এই মেশিনটিতে আমাদের কেবলমাত্র সংকলকটি একটি ছোট বাগ রয়েছে It এটি এলোমেলোভাবে একটি চরিত্রটিকে মুছে ফেলে সংকলনের আগে উত্স কোড ফাইল Ok ঠিক আছে, আপনাকে পাঁচ মিনিটের মধ্যে দেখতে পাবেন! " ও খুশিতে শিস দিয়ে ঘর থেকে বেরিয়ে গেল।

আপনি গ্যারান্টি দিতে পারেন যে আপনি চাকরি পাবেন?

কাজটি

একটি প্রোগ্রাম লিখুন Hello, world!যা ফাইলের কোনও অবস্থান থেকে একক অক্ষর অপসারণের পরেও স্ট্যান্ডার্ড আউটপুটে মুদ্রণ করবে । অথবা এটি যতটা সম্ভব কাছাকাছি আসা।

নিয়ম

কোনও এক্সট্রেনাস আউটপুট নয় - Hello, world!অবশ্যই স্ট্যান্ডার্ড আউটপুটে মুদ্রিত একমাত্র সংক্ষিপ্ত জিনিস হতে হবে। অন্যান্য চরিত্রগুলি যদি আপনার পছন্দের ভাষার দ্বারা প্রাকৃতিকভাবে উত্পাদিত হয় তবে এটি অন্তর্ভুক্ত করা ঠিক আছে - যেমন একটি অনুবর্তনযোগ্য নিউলাইন বা এমন কিছুর মতো [1] "Hello, world!"(উদাহরণস্বরূপ আপনি যদি আর ব্যবহার করছিলেন ) তবে এটি অবশ্যই প্রতিটি সময় একই জিনিস মুদ্রণ করতে হবে। এটি মুদ্রণ করতে পারে না Hello, world!Hello, world!বা Hello world!" && x==1উদাহরণস্বরূপ কিছু সময়। সতর্কতাগুলি অবশ্য অনুমোদিত।

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

স্কোরের তোমার সংগ্রহ বার আপনার প্রোগ্রাম ব্যর্থ সংখ্যা । অন্য কথায়, আপনার ফাইলটিতে পৃথক অবস্থানের সংখ্যা যেখানে একটি অক্ষর মুছতে আপনার প্রোগ্রামকে কাজ করা থেকে বিরত করে। সর্বনিম্ন স্কোর জয়। টাই হওয়ার সময়ে সংক্ষিপ্ততম কোডটি জয়ী হয়।

তুচ্ছ সলিউশন যেমন "Hello, world!"বিভিন্ন ভাষা (15 স্কোর) এ গ্রহণযোগ্য, কিন্তু তারা জিতে যাচ্ছে না। আমি কমপক্ষে 4 এর স্কোর সহ একটি পার্ল সমাধান পেয়েছি, যা আমি শেষ পর্যন্ত পোস্ট করব।

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

আপডেট 2: হ্যাঁ, আপনার প্রোগ্রামটি আসলে স্কোর পাওয়ার জন্য উপরে বর্ণিত কাজটি সম্পাদন করতে হবে! মানে এটি Hello, world!কমপক্ষে একবার সফলভাবে মুদ্রণ করা উচিত । এটি সুস্পষ্ট হওয়া উচিত ছিল। কমান্ড-লাইন স্যুইচ এবং অন্যান্য সেটিংস যা কার্যকারিতা যুক্ত করে তা আপনার প্রোগ্রামের অংশ হিসাবেও গণনা করে এবং একক অক্ষর মুছে ফেলার বিষয়। প্রোগ্রামটি অবশ্যই কোনও ব্যবহারকারীর ইনপুট ছাড়াই তার কাজটি সম্পন্ন করতে হবে। আপনার ব্যর্থতার গণনায় সংকলন করতে ব্যর্থতা।

শুভ প্রোগ্রামিং, এবং আপনি কাজ পেতে পারেন। তবে আপনি যদি ব্যর্থ হন তবে আপনি সম্ভবত সেই মন্দ লোকের পক্ষে কোনওভাবেই কাজ করতে চান নি।

পার্ল পরীক্ষার স্ক্রিপ্ট:

use warnings;
use strict;

my $program   = 'test.pl';
my $temp_file = 'corrupt.pl';
my $command = "perl -X $temp_file"; #Disabled warnings for cleaner output.
my $expected_result = "Hello, world!";

open my $in,'<',$program or die $!;
local $/;           #Undef the line separator   
my $code = <$in>;   #Read the entire file in.

my $fails = 0;
for my $omit_pos (0..length($code)-1)
{
    my $corrupt = $code;
    $corrupt =~ s/^.{$omit_pos}\K.//s;  #Delete a single character

    open my $out,'>',$temp_file or die $!;
    print {$out} $corrupt;  #Write the corrupt program to a file
    close $out;

    my $result = `$command`;    #Execute system command.
    if ($result ne $expected_result)
    { 
        $fails++;
        print "Failure $fails:\nResult: ($result)\n$corrupt";
    }
}

print "\n$fails failed out of " . length $code;

1
মুছে ফেলা অক্ষরের ফলে প্রোগ্রামটি সংকলন করতে পারে না? এটি এখনও কাজ না হিসাবে গণনা করা হয়?
lochok

@ লোকোক, হ্যাঁ, এটি ব্যর্থতা হিসাবে গণ্য হবে। মুছে ফেলা Hello, World!না হওয়ার দিকে পরিচালিত কোনও মুছে ফেলা অক্ষর ব্যর্থতা।


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

আপনি "কমান্ড-লাইন সুইচ এবং কার্যকারিতা যুক্ত করে এমন অন্যান্য সেটিংস" এর উদাহরণ দিতে পারেন? আপনি কি নিজেকে প্রোগ্রামটিতে প্রদত্ত সুইচ এবং সেটিংস বলতে বা বিল্ড এনভায়রনমেন্টের মধ্যে স্যুইচ এবং সেটিংস ব্যবহার করে বোঝাতে চাইছেন?
কাসাডিরোবিসন

উত্তর:


129

বেফুঞ্জ, স্কোর 0

আমি মনে করি আমি এটি ক্র্যাক করেছি - কোনও একক অক্ষর মুছলে আউটপুট পরিবর্তন হবে না।
লাইন 1 থেকে কোনও অক্ষর মুছে ফেলা কিছুই পরিবর্তন করে না - এটি এখনও একই জায়গায় নেমে যায়।
2 এবং 3 টি রেখাগুলি অপ্রয়োজনীয়। সাধারণত লাইন 2 কার্যকর করা হয়, তবে আপনি যদি এটি থেকে কোনও অক্ষর মুছে <ফেলেন তবে এটি মিস হয়ে যায় এবং লাইন 3 চার্জ নেয়।
নতুন লাইনগুলি মোছা তা ভেঙে না (এটি আমার আগের সংস্করণটিকে ভেঙে দেয়)।
দুঃখিত, কোন পরীক্ষা প্রোগ্রাম নেই।

সম্পাদনা : অনেক সরলীকৃত।

                              vv
@,,,,,,,,,,,,,"Hello, world!"<<
@,,,,,,,,,,,,,"Hello, world!"<<

প্রবাহের একটি সংক্ষিপ্ত ব্যাখ্যা:

  1. বেফুঞ্জ উপরের-বাম থেকে ডান দিকে সরানো শুরু করে। স্পেসগুলি কিছুই করে না।
  2. v মৃত্যুদন্ড কার্যকর প্রবাহটি নীচের দিকে ঘুরিয়ে দেয়, সুতরাং এটি এক লাইনে নেমে যায়।
  3. < কার্যকর করা প্রবাহকে বামে পরিণত করে, সুতরাং এটি বিপরীত ক্রমে 2 লাইনটি পড়ে।
  4. "Hello, world!"স্ট্যাকের স্ট্রিংটিকে ধাক্কা দেয়। এটি বিপরীত ক্রমে ধাক্কা দিয়েছে, কারণ আমরা ডান থেকে বামে চালাচ্ছি।
  5. ,একটি চরিত্র পপ এবং এটি মুদ্রণ। শেষ করা অক্ষরটি প্রথমে মুদ্রিত হয়, যা আরও একবারে স্ট্রিংটিকে বিপরীত করে।
  6. @ প্রোগ্রামটি সমাপ্ত করে।

2
+1, দুর্দান্ত সমাধান। আমি মনে করি না যে কোনও পরীক্ষা প্রোগ্রামের প্রয়োজনীয়তা রয়েছে কারণ এটি স্পষ্টতই স্পষ্ট যে সম্ভাব্য উল্লেখযোগ্যভাবে মুছে ফেলার সংখ্যা খুব কমই রয়েছে।

4
যাচাই করা এত সহজ এবং এতে কোনও আলোচনা জড়িত না। জিনিয়াস!
কর্মা ফিউজবক্স

একটি দুর্দান্ত সমাধানের জন্য অভিনন্দন।

2
আমি জানি এটি কোড-গল্ফ নয় , তবে এখানে 66 বাইটের একটি সংস্করণ রয়েছে ।
এমডি এক্সএফ

42

পার্ল, স্কোর 0

(১৪7 টি অক্ষর)

এখানে আমার সমাধানটি দেওয়া হয়েছে, যা আমি 4 থেকে নীচে 0 এ পেতে সক্ষম হয়েছি:

eval +qq(;\$_="Hello, world!";;*a=print()if length==13or!m/./#)||
+eval +qq(;\$_="Hello, world!";;print()if*a!~/1/||!m/./#)##)||
print"Hello, world!"

এটি কাজ করতে সমস্ত এক লাইনে উপস্থিত হতে হবে; লাইন বিরতি কেবল "পঠনযোগ্যতা" এর জন্য।

এটি পার্লের রোগতাত্ত্বিকভাবে অনুমতিমূলক বাক্য গঠন থেকে উপকৃত হয়। কিছু হাইলাইট:

  • স্বীকৃত নয় এমন বেয়ারওয়ার্ডগুলি স্ট্রিং হিসাবে বিবেচিত হবে। সুতরাং যখন evalহয়ে যায় evl, এটি কোনও ত্রুটি নয় যদি সেই পয়েন্টে কোনও স্ট্রিং অনুমোদিত হয়।
  • অ্যানারি +অপারেটর, যা নির্দিষ্ট পরিস্থিতিতে সিনট্যাক্স বিস্মৃত করা ছাড়া আর কিছুই করে না। এটি function +argumentউপরোক্তগুলির সাথে দরকারী, কারণ (যেখানে + অখণ্ড থাকে) হয়ে যায় string + argument(সংযোজন) যখন কোনও ফাংশনের নাম ম্যাঙ্গেল হয়ে স্ট্রিং হয়ে যায়।
  • স্ট্রিং ঘোষণার অনেকগুলি উপায়: একটি ডাবল উদ্ধৃত স্ট্রিং qq( )একটি একক-উদ্ধৃত স্ট্রিং হয়ে উঠতে পারে q(); প্রথম বন্ধনী দ্বারা ডিলিমেট করা qq(; ... )একটি স্ট্রিং সেমিকোলন দ্বারা সীমাবদ্ধ একটি স্ট্রিং হয়ে উঠতে পারে qq; ... ;#অভ্যন্তরীণ স্ট্রিংগুলি জিনিসগুলিকে মন্তব্যে রূপান্তরিত করে ভারসাম্যপূর্ণ সমস্যাগুলি দূর করতে পারে।

এর দৈর্ঘ্য সম্ভবত কিছুটা হ্রাস করা যেতে পারে, যদিও আমি সন্দেহ করি যে উগ্রেনের সমাধানটি পিটানো যেতে পারে।


13
লাইন ব্রেকগুলির জন্য +1 কেবল পঠনযোগ্যতার জন্য ...
বাকুরিউ

40

HQ9 + +

এটি কোনও অক্ষর মুছে ফেলা হলে শূন্যের স্কোর পায় এমন উদ্দেশ্যে ফলাফলটি তৈরি করতে কখনই ব্যর্থ হয় না।

HH

আমি কখন শুরু করব?


1
এটি "হ্যালো, ওয়ার্ল্ড" তৈরি করে যদিও "হ্যালো, ওয়ার্ল্ড!" যেমন বলা আছে.
পল আর

16
বাজে কথা, ভাষাটি ঠিক এশোলং উইকিতে ভুলভাবে নির্দিষ্ট করা হয়েছিল;)
স্কিভি

11
যদি আপনার কাছে ইন্টারভিউ কম্পিউটারে এইচকিউ 9 + সংকলক থাকে তবে আপনার পক্ষে ভাল ... :)

আপনি নিজের বগী সংকলক লিখতে পারেন।
পাইরুলেজ

2
@ mbomb007 এই দোভাষীটি কমান্ডের Hello, world!জন্য মুদ্রণ করে H
ডেনিস

12

বেফুঞ্জ -98 , স্কোর 0, 45 বাইট

20020xx""!!ddllrrooww  ,,oolllleeHH""cckk,,@@

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

যদিও ইতিমধ্যে একটি সর্বোত্তম সমাধান খুঁজে পাওয়া গেছে (এবং কোনও টাই ব্রেকার নেই), আমি ভেবেছিলাম যে আমি এটি বেফঞ্জ 98 এর মাধ্যমে যথেষ্ট সরল করা যেতে পারে show

ব্যাখ্যা

20020xxনির্ভরযোগ্যভাবে ব-দ্বীপ (এঁটেল পোকা মধ্যে নির্দেশ পয়েন্টার পদক্ষেপ) এর সেট করে (2,0)যাতে প্রথম থেকে শুরু x, শুধুমাত্র প্রত্যেক অন্যান্য কমান্ড মৃত্যুদন্ড কার্যকর করা হয়। এটি কেন কাজ করে তার বিশদ ব্যাখ্যার জন্য এই উত্তরটি দেখুন । এর পরে, কোডটি কেবল:

"!dlrow ,olleH"ck,@

আমরা প্রথমে সমস্ত প্রাসঙ্গিক অক্ষর কোডগুলি স্ট্যাকের সাথে ধাক্কা দিয়ে থাকি "!dlrow ,olleH"। তারপরে ck,স্ট্যাকের শীর্ষগুলি ( ,), 13 ( cপ্লাস 1) বার ( k) মুদ্রণ করুন । @প্রোগ্রামটি সমাপ্ত করে।


11

জে, 7 পয়েন্ট

বিজোড় অবস্থান সহ প্রতিটি বর্ণ নির্বাচন করা:

   _2{.\'HHeellllo,,  wwoorrlldd!!'
Hello, world!

5
গল্ফস্ক্রিপ্টে একই জিনিসটি 4 পয়েন্ট হবে:'HHeelllloo,, wwoorrlldd!!'2%
পিচবোর্ড_বক্স

@ কার্ডবোর্ড_বক্স এটি জমা দিতে নির্দ্বিধায় :)
এলোমেলো

উত্সাহ দেওয়া কারণ আমি এটি বুঝতে পেরেছি এবং এটি প্রতারণার মতো মনে হয় না।
মাইকেল স্টারন

3

বেফুঞ্জ -৩৩, স্কোর 0 (by৩ বাইট)

আমি জানি এটি কোনও কোড-গল্ফ চ্যালেঞ্জ নয়, তবে আমি মনে করেছি যে এটি বিদ্যমান বেফুঞ্জ -৩৩ সমাধানটিকে আকারের দিক দিয়ে উন্নত করা যায় কিনা তা দেখার জন্য আগ্রহী হবে। আমি অনুরূপ ত্রুটি 404 চ্যালেঞ্জ ব্যবহারের জন্য মূলত এই কৌশলটি বিকাশ করেছি , তবে সেই ক্ষেত্রে একটি মোড়কের পেডলোডের প্রয়োজনটি 3 লাইন সমাধানটিকে আরও অনুকূল করে তুলেছে।

এটি মার্টিনের বেফুঞ্জ -99 উত্তরের মতো ততটা ভাল নয়, তবে এটি এখনও বিজয়ী বেফুঞ্জ -99 সমাধানটিতে মোটামুটি উল্লেখযোগ্য হ্রাস।

<>>  "!dlrow ,olleH">:#,_@  vv
  ^^@_,#!>#:<"Hello, world!"<<>#

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

ব্যাখ্যা

পে-লোডের দুটি সংস্করণ রয়েছে। একটি আনল্যাটারড প্রোগ্রামের জন্য, প্রথমটি <প্রোগ্রামটিকে ডান থেকে বামে সঞ্চালিত করে, লাইনটির শেষ প্রান্তে মোড়ানো হয়, যতক্ষণ না এটি vএটি দ্বিতীয় লাইনের নিচে সরাসরি পৌঁছে দেয় এবং <এটি বাম থেকে ডান সংস্করণে রেখে দেয় পেডলোডের

দ্বিতীয় লাইনের একটি ত্রুটির কারণে ফাইনালটি <বামে স্থানান্তরিত হয় এবং পরিবর্তে >প্রবাহটি সরাসরি পরিবর্তে পরিবর্তিত হয়। #(সেতু) কমান্ড উপর তিড়িং লাফ সম্পর্ক নেই, তাই না হওয়া পর্যন্ত কাছাকাছি গোপন এবং একটি ছুঁয়েছে কোড শুধু চলতে ^লাইনের শুরুতে, প্রথম লাইন এটিকে আপ বিধায়ক, এবং তারপর একটি >অধিকার ডান-পারেন- সেটিকে বিধায়ক বাম পেলোড

প্রথম লাইনে বেশিরভাগ ত্রুটি কেবল চূড়ান্ত vকমান্ডগুলি একের পর এক সরিয়ে দেয়, তবে এটি কোডের মূল প্রবাহকে পরিবর্তন করে না। প্রথমটি মুছে ফেলা <কিছুটা পৃথক, যদিও - সেক্ষেত্রে মৃত্যুদন্ডের পথটি সরাসরি প্রথম লাইনে বাম থেকে ডান পেডলোর দিকে প্রবাহিত হয়।

অন্যান্য বিশেষ ক্ষেত্রে লাইন বিরতি অপসারণ হয়। কোডটি যখন লাইনটির শেষ প্রান্তে আবৃত হয়, এক্ষেত্রে এটি এখন দ্বিতীয় পংক্তির ব্যবহারের শেষ। #ডান দিক থেকে কমান্ডের মুখোমুখি হওয়ার পরে , এইটি ঝাঁপিয়ে পড়ে >এবং এভাবে ডান থেকে বাম পেলোডে সরাসরি চলতে থাকে।

যদি কোনও সন্দেহ থাকে তবে আমি পার্ল স্ক্রিপ্টটিও পরীক্ষা করে দেখেছি এবং এটি নিশ্চিত করেছে যে "63 এর মধ্যে 0 ব্যর্থ হয়েছে"।


0

গোল> <> স্কোর 0, 38 বাইট

<<H"Hello, world!"/
H"Hello, world!" <

চ্যালেঞ্জের পরে ভাষা প্রকাশিত হয়।

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