একজন খারাপ টার্নারি অপারেটর অন্য একজনের প্রাপ্য


18

আজকের দৈনিক ডাব্লুটিএফ নীচের কোডের লাইনটি উদ্ধৃত করেছে ...

FailSafe==0?'No technical alarms':((FailSafe&1)!=0&&(FailSafe&2)!=0&&(FailSafe&4)!=0&&(FailSafe&8)!=0?'Detection zones staying in a given state; Bad visibility;
Initialization; Bad configuration':((FailSafe&1)!=0&&(FailSafe&2)!=0&&(FailSafe&4)!=0?'Detection zones staying in a given state; Bad visibility; Initialization':
((FailSafe&1)!=0&&(FailSafe&2)!=0&&(FailSafe&8)!=0?'Detection zones staying in a given state; Bad visibility; Bad configuration':((FailSafe&1)!=0&&(FailSafe&4)!=0&&
(FailSafe&8)!=0?'Detection zones staying in a given state; Initialization; Bad configuration':((FailSafe&2)!=0&&(FailSafe&4)!=0&&(FailSafe&8)!=0?'Bad visibility;
Initialization; Bad configuration':((FailSafe&1)!=0&&(FailSafe&2)!=0?'Detection zones staying in a given state; Bad visibility':((FailSafe&1)!=0&&(FailSafe&4)!=0?'Detection 
zones staying in a given state; Initialization':((FailSafe&1)!=0&&(FailSafe&8)!=0?'Detection zones staying in a given state; Bad configuration':((FailSafe&2)!=0&&
(FailSafe&4)!=0?'Bad visibility; Initialization':((FailSafe&2)!=0&&(FailSafe&8)!=0?'Bad visibility; Bad configuration':((FailSafe&4)!=0&&(FailSafe&8)!=0?'Initialization; Bad 
configuration':((FailSafe&1)!=0?'Detection zones staying in a given state':((FailSafe&2)!=0?'Bad visibility':((FailSafe&4)!=0?'Initialization':((FailSafe&8)!=0?'Bad 
configuration':'Unknown')))))))))))))))

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

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

আমাদের কী অন্য কোনও পরিবর্তনশীল (উদাহরণস্বরূপ, f=FailSafeবা এর মতো কিছু) এ FailSafe সংরক্ষণ করার অনুমতি দেওয়া হচ্ছে ?
প্রোগ্রামফক্স

@ প্রোগ্রাম্রামফক্স এটি ঠিক আছে, তবে সেই কাজটি গণনাতে অন্তর্ভুক্ত। কেবলমাত্র বয়লারপ্লেটই আপনাকে এমন পয়েন্টে নিয়ে যায় যেখানে ফেইলসেফ নামে একটি ভেরিয়েবল বিনামূল্যে।
বিলপিজ

আপনি কি দয়া করে আমাদের জন্য কোডটি প্রিন্ট করতে পারেন? নাকি চ্যালেঞ্জ বুঝতে চ্যালেঞ্জ?
জন ডিভোরাক

3
@ জনডভোরাক আমি নিশ্চিত না যে আমি পারব ...
বিলপিজ

2
আমি এটি আশা করি: পেস্টবিন.
com

উত্তর:


5

রুবি, 210 টি অক্ষর

@ জাভান ডিভোরাকের সমাধানের মতো তবে কিছুটা কার্যকর এবং কিছুটা খাটো orter

f=FailSafe
e=[f&1,f&2,f&4,f&8,1-f].zip(["Detection zones staying in a given state","Bad visibility","Initialization","Bad configuration","No technical alarms"]).map{|a,b|a>0&&b}-[!0]
e[0]||="Unknown"
e.join"; "

5

গল্ফস্ক্রিপ্ট, 167 টি অক্ষর

FailSafe.15&["Unknown"][""]"Bad configuration
Initialization
Bad visibility
Detection zones staying in a given state"
n/{`{n+1$+}+%}/1>+=n%"; "*"No technical alarms"if

কোডটি ভেরিয়েবলের মান ধরে FailSafeএবং ফলাফলটিকে স্ট্যাকের উপরে ঠেলে দেয় (অর্থাত্ স্ট্র্যান্ডলোন প্রোগ্রাম হিসাবে চালিত হলে স্ট্রিংটিকে আউটপুট দেয়)। আপনি অনলাইনে কোডটি পরীক্ষা করতে পারেন ।

কোডটি মূলত সমস্ত 16 টি সম্ভাব্য ফলাফলের একটি অ্যারে তৈরি করে, চারটি সর্বনিম্ন বিটের উপর নির্ভর করে ত্রুটি বার্তাটি নির্বাচন করে FailSafe। বাহ্যিকতম ifতারপর শূন্য কেস পরিচালনা করে।


আমি মনে করি orপরিবর্তে ifআপনি বাঁচাতে হবে .। তবে আমি স্বীকার করি যে আমি মূল কোডটি বোঝার চেষ্টা করিনি।
পিটার টেলর

4

রেবোল / লাল: 208 টি অক্ষর

আমি বিষয়ে সম্মত হন যে নেস্টেড তিন অপারেটার বিরক্তিকর হিসেবে এই golfing আগ্রহী যেমন নই ... আর এই উল্লেখ আসলে Rebol / লাল এর জন্য একটি চমৎকার দৃষ্টান্ত হল ক্ষেত্রে । এটি সুইচ সম্পর্কিত এবং সত্যিই এই মত জিনিস সমতল করতে সাহায্য করে:

f: FailSafe
append case [
    0 < f and 1 ["Detection zones staying in a given state"]
    1 < f and 2 ["Bad visibility"]
    3 < f and 4 ["Initialization"]
    7 < f and 8 ["Bad configuration"]
    f > 0 ["Unknown"]
    true ["No technical alarms"]
] "; "

CASE / ALL নামে একটি বৈকল্পিক রয়েছে যা প্রকৃতপক্ষে সমস্ত কন্ডিশন চালাবে, তবে ডিফল্টটি প্রথম সত্যের পরে বন্ধ হয়ে যায়।

আমি এটি 208 এ কিছুটা "গল্ফ" করব:

x: ফানক [y] [y <(f: FailSafe) এবং ++ y] অ্যাপেন্ড কেস [x 0 ["একটি নির্দিষ্ট স্থানে থাকা অঞ্চলগুলি সনাক্তকরণ"] x 1 ["খারাপ দৃশ্যমানতা"] x 3 ["আরম্ভকরণ"] y 7 ["খারাপ কনফিগারেশন"] এফ> 0 ["অজানা"] 1 ["কোনও প্রযুক্তিগত এলার্ম নেই]]]"; "


4

এপিএল (172)

2↓⊃,/'; '∘,¨{⍵=0:⊂'No technical alarms'⋄0=16|⍵:⊂'Unknown'⋄'Detection zones staying in a given state' 'Bad visibility' 'Initialization' 'Bad configuration'/⍨⌽⍵⊤⍨4/2}FailSafe

ব্যাখ্যা:

  • {... }FailSafe: স্ট্রিং উত্পন্ন
    • ⍵=0:⊂'No technical alarms': 0কেস
    • 0=16|⍵:⊂'Unknown': Unknownকেস (ব্যর্থ সাফ 0 নয় তবে প্রথম চার বিট হ'ল)
    • 'Detection zones staying in a given state' 'Bad visibility' 'Initialization' 'Bad configuration'/⍨⌽⍵⊤⍨4/2: আর্গুমেন্টে সর্বনিম্ন 4 টি বিট পান ( ⍵⊤⍨4/2), বিপরীত ( ), এবং ( ) বিটগুলির জন্য স্ট্রিংগুলি নির্বাচন করুন /⍨
  • '; '∘,¨: '; 'প্রতিটি ফিরে আসা স্ট্রিংয়ের সামনের অংশে যুক্ত করুন ,
  • ⊃,/: সমস্ত স্ট্রিং একসাথে যোগ দিন,
  • 2↓: এবং প্রথম দুটি অক্ষর সরান (কারণ '; 'সামনে একটি অতিরিক্ত আছে ।)

পরিবর্তন করে দুই বাইট সংরক্ষণ ⊃,/করতে
অ্যাডাম

3

রুবি, 183 টি অক্ষর

[(f=FailSafe)<1?"No technical alarms":f&15<1?:Unknown:["Detection zones staying in a given state"*f[0],"Bad visibility"*f[1],"Initialization"*f[2],"Bad configuration"*f[3]]-[""]]*"; "

তবুও অন্য একটি রুবি সমাধান, তবে অন্যদের চেয়ে কিছুটা খাটো। এটি FailSafeআউটপুট স্ট্রিং তৈরি করতে ধ্রুবক (রুবিতে সমস্ত বড় শনাক্তকারী ধ্রুবক) ব্যবহার করে এমন একক অভিব্যক্তি ।


রুবিতে আপনার FailSafeব্যবহারের আগে ধ্রুবক (যেমন ) ঘোষণা করা উচিত । এবং আপনি কোড উত্থাপনuninitialized constant FailSafe

4
@ .Ый প্রশ্নটিতে যেমন বলা হয়েছে: "এমন কিছু কোড লিখুন যা ফেইলসেফ নামে একটি পূর্ণসংখ্যার মান নেয়" - সুতরাং আমার কোড (অন্য সমস্ত উত্তরগুলির মতো এখানে) ধরে নেওয়া হয়েছে যে FailSafeইতিমধ্যে সংজ্ঞায়িত হয়েছে। আপনি যখন কোডটি চালাতে চান, আপনাকে প্রথমে নিজেকে ধ্রুবকটি সংজ্ঞায়িত করতে হবে।
ভেন্টোরো

2

জাভাস্ক্রিপ্ট, 197 195 টি অক্ষর

FailSafe?['Detection zones staying in a given state','Bad visibility','Initialization','Bad configuration'].filter(function(_,i){return FailSafe&1<<i}).join('; ')||'Unknown':'No technical alarms'

ফরম্যাট:

FailSafe
  ? [ 'Detection zones staying in a given state',
      'Bad visibility',
      'Initialization',
      'Bad configuration'
    ].filter(function(_, i) {
      return FailSafe & 1<<i;
    }).join('; ') || 'Unknown'
  : 'No technical alarms';

ES6 বা Coffeescript ফাংশন এক্সপ্রেশন ব্যবহার করে আরও হ্রাস করা যেতে পারে।


ফেইলসেফ 18 বছর হলে কী হবে? (প্রকৃতপক্ষে, আসল চ্যালেঞ্জ কোডটি কেবল নীচের 4 টি বিটকে দেখায়, তাই অজানা কেসটি আসলে কখনই সনাক্ত করা যায় না!) সুতরাং প্রশ্নটি হল, আমাদের যদি সত্যই এটির যত্ন নেওয়া বা একটি "নির্দিষ্ট" অ্যালগরিদম সরবরাহ করা উচিত।
blabla999

@ blabla999: এটি ফিরে আসবে "Bad visibility"কারণ 2-বিট সেট আছে এবং অন্য 4 টি বিটের কোনওটিই নয়। Unknownকেস যখন নিম্ন 4 টি বিট কেউই সেট করা হয় হবে, কিন্তু FailSafeহয় != 0- শুধু মূল কোড (দিয়ে চেষ্টা হিসেবে 16)। আমাদের এটি ঠিক করা উচিত কিনা আপনি ওপি (প্রশ্নটির মন্তব্যে) জিজ্ঞাসা করবেন, আমাকে নয়…
বার্গি

আপনি ঠিক আছেন - আমি বোকা। আমি কোডটির এই টুকরোটি দেখে এত বিভ্রান্ত হয়ে পড়েছি। তার জন্য দুঃখিত।
blabla999

2

রুবি, 213 টি অক্ষর

f=failSafe
e=f&1>0?["Detection zones staying in a given state"]:[]
e+=["Bad visibility"]if f&2>1
e+=["Initialization"]if f&4>3
e+=["Bad configuration"]if f&8>7
e[0]||=f>0?"Unknown":"No technical alarms"
e.join"; "

এটি কোনও ফাংশন বডি ( def transform failSafe; ...; end) এ জড়িত জরিমানা কাজ করবে । এটি একক এক্সপ্রেশন হিসাবেও ব্যবহৃত হতে পারে (বন্ধনীগুলিতে মোড়ানো কারণ একটি সেমিকোলন / নিউলাইন সর্বনিম্ন অগ্রাধিকার থাকে) বা e.join"; "একটি এক্সপ্রেশনের মধ্যে সর্বশেষ অভিব্যক্তি ( ) সহ বিবৃতিগুলির ক্রম হিসাবে ব্যবহৃত হয়।


আমি আলাদা নামের অনুমতি দেওয়ার জন্য একটি বিধি যুক্ত করব।
বিলপিজ

e+=["Initialization"]if f&4>3আমি পাইথনে এটি চাই
ɐɔıʇǝɥʇuʎs

@ youuʎs আপনি কি দ্বারা প্রভাবিত হন না []||=?
জন ডিভোরাক

এটি কী করে তা নিশ্চিত নয় ... এছাড়াও: since FailSafe must be a constant in Rubyহু পাইথন মনোভাব আরো ভালো "হ্যাঁ, তুমি করতে কাপড় ভঙ্গ করে, কিন্তু আশা করবেন না আমাকে জগাখিচুড়ি পরিষ্কার করতে"
ɐɔıʇǝɥʇuʎs

1
@ uʎs ||=এর মতো +=তবে এর সাথে ||- a ||= bসমান a = a || b। এটি সাধারণত কোনও ভেরিয়েবলের ডিফল্ট হওয়ার জন্য ব্যবহৃত হয় যখন এটি মিথ্যা হয়।
অ্যারন ডুফর

1

ভিবিএস স্ক্রিপ্ট, 204 234 232 টি অক্ষর

(সম্পাদনা করুন: এখন বিভক্ত ()। 232 এর পরিবর্তে অ্যারে () ব্যবহার করে 2 দ্বারা উন্নত স্কোর))

f=failsafe:for b=0to 3:s=s&split(",; Detection zones staying in a given state,; Bad visibility,,; Initialization,,,,; Bad configuration",",")(f and 2^b):next:array("No technical alarms","Unknown",mid(s,3))(2+(f=0)+(len(s)=0))

(সম্পাদনা করুন: "অজানা" অংশটি ভুলে গেছেন 23 এখন 234 টি অক্ষর))

f = failafe: b = 0 to 3: s = s & split (",; চিহ্নিত অঞ্চলগুলি প্রদত্ত অবস্থায় থাকবে; খারাপ দৃশ্যমানতা ,,; সূচনা ,,,,; খারাপ কনফিগারেশন", ",") (চ এবং 2 ^ খ): পরবর্তী: বিভক্ত ("প্রযুক্তিগত অ্যালার্ম নেই, অজানা" "এবং মিড (গুলি, 3),", ") (2+ (চ = 0) + (লেন (গুলি) = 0))

(মূল, 230)

খ = 0 থেকে 3: এস = গুলি এবং বিভাজনের জন্য (",; চিহ্নিত অঞ্চলগুলি প্রদত্ত অবস্থায় থাকবে; খারাপ দৃশ্যমানতা;; সূচনা ,,,,; খারাপ কনফিগারেশন", ",") (ফেইলএফ এবং 2 ^ বি): পরবর্তী : অ্যারে (মাঝারি (গুলি, 3), "কোনও প্রযুক্তিগত এলার্ম নেই") (- (লেন (গুলি) = 0))

অবশ্যই এটি একটি স্ক্রিপ্টের অংশ মাত্র। এটি পরীক্ষা করতে, এই জাতীয় কিছু চেষ্টা করুন:

FailSafe=cint(inputbox("Please enter Failsafe as an integer"))
f=failsafe:for b=0to 3:s=s&split(",; Detection zones staying in a given state,; Bad visibility,,; Initialization,,,,; Bad configuration",",")(f and 2^b):next
msgbox array("No technical alarms","Unknown",mid(s,3))(2+(f=0)+(len(s)=0))

আমিও অজানা
কেসটি

@ blabla999 সত্যিই। সংশোধন করা হয়েছে। ধন্যবাদ!
জেসেস্টার ব্লু

1

স্মার্টটাক, 243 টি অক্ষর

FailSave>15ifTrue:'Unknown'ifFalse:[((((1to:4)select:[:b|FailSafe isBitSet:b])collect:[:b|#('Detection zones staying in a given state' 'Bad visibility' 'Initialization' 'Bad configuration')at:b])asStringWith:'; ')ifEmpty:'No technical alarms']     

পাঠযোগ্যতার জন্য ফর্ম্যাট করা:

FailSafe > 15 
    ifTrue:'Unknown'
    ifFalse:[
        ((((1 to:4)
            select:[:b | FailSafe isBitSet:b ])
                collect:[:b| 
                    #( 'Detection zones staying in a given state'
                       'Bad visibility'
                       'Initialization'
                       'Bad configuration') at:b ]
                    ) asStringWith:'; ')
                        ifEmpty:'No technical alarms']

প্রথম সংস্করণে বাগটি নির্দেশ করার জন্য বার্গিকে ধন্যবাদ।

এটি একটি ধারণা নিয়ে আসে: আমি যদি ফেইলসেফ মানটিকে 6-বিট মাস্কে মানচিত্র করি, (0 -> 16 এবং 15-এর চেয়ে বেশি -> 32) ম্যাপিং করে, আমি চূড়ান্ত পরীক্ষাগুলি থেকে মুক্তি পেতে পারি। 6 বিট মাস্ক মিটার ম্যাপিং এর মাধ্যমে করা যেতে পারে:

m := {16},(1 to: 15) at:FailSafe+1 ifAbsent:32.

অর্থাত্, শূন্য ফেইলসেফের জন্য এম হবে 16 এবং বহিরাগত মানগুলির জন্য 32। তারপরে উপরের মতো স্ট্রিং নির্বাচন করুন এবং সংগ্রহ করুন। এটি নতুন কোড দেয়:

m := {16},(1 to:15) at:FailSafe+1 ifAbsent:32.
(((1 to:6) select:[:b | m isBitSet:b ])
        collect:[:b| 
            #( 'Detection zones staying in a given state'
               'Bad visibility'
               'Initialization'
               'Bad configuration'
               'No technical alarms'        
               'Unknown') at:b ]
               ) joinWithAll:'; '

(আমি স্ট্রিংউইথ হিসাবেও প্রতিস্থাপন করেছি: joinWithAll দ্বারা:, যা একটি উপনাম)।

যদিও এটি একটি দুর্দান্ত ধারণা বলে মনে হচ্ছে, এটি একই চরিত্রের গণনা - দীর্ঘশ্বাস ফেলেছে। সম্ভবত ঘন ঘন অপারেটর নামের আরও কিছু প্রোগ্রামিং ভাষা এখানে আরও ভাল স্কোর!

আমি মিটার জন্য অস্থায়ী পরিবর্তনশীল না ব্যবহার করে কিছু অক্ষর সংরক্ষণ করতে পারি, তবে এটি লুপে এবং পুনরায় সংশোধন করে স্ট্রিং ভেক্টরের জন্য একটি আক্ষরিক অ্যারে ব্যবহার না করে, 240 অক্ষরের নীচে একটি গণনা পেতে পারি।

অবশেষে, মাস্ক মিটার দ্বারাও গুণ করা যেতে পারে m:={32},(1 to: 16) at:(FailSafe+1 min:17) যেতে পারে যা এপিএলে সংক্ষিপ্ত হতে পারে। তারপরে ভেক্টরে শেষ দুটি স্ট্রিং এক্সচেঞ্জ করুন।

পিএস: প্রথম সংস্করণটি ধরে নিয়েছে যে এখানে অন্যান্য সমাধানগুলির মতোই ফয়েলসেফ অ-নেতিবাচক। দ্বিতীয়টি কোনও কিছুর সাথে এমনকি শূন্য বা অন্যান্য অ-সংখ্যা নিয়েও ডিল করতে পারে।


2
Unknownকনফিগারেশন সম্পর্কে কি ?
বার্গি

ওচ দুঃখিত - আমাকে এটি ঠিক করতে হবে।
blabla999

0

কফিস্ক্রিপ্ট, 161 160 221 অক্ষর

F = FailSafe;F<16 and (F and [0..3].filter((i)->(1<<i)&F).map((i)->(['Detection zones staying in a given state','Bad visibility','Initialization','Bad configuration'])[i]).join('; ') or 'No technical alarms') or 'Unknown'

কি হয়েছে Unknownএবং No technical alarms?
বার্গি

3
আঃ বাজে কথা। আমি যখন গল্ফস্ক্রিপ্টের উত্তরটি মারি তখন আমার সন্দেহ হওয়া উচিত ...
রায়ান কেনেডি

সর্বদা হিসাবে, আমি প্রান্তের মামলাগুলি ভুলে গেছি ...
রায়ান কেনেডি

0

VB.net

Function StateText(f As FailFlag) As String
  If f=0 Then Return "No Technical Alarm"
  Dim t=""
  If f.HasFlag(f1) Then t &= "Detection zones staying in a given state; "
  If f.HasFlag(f2) Then t &= "Bad visibility; "
  If f.HasFlag(f4) Then t &= "Initialization; "
  If f.HasFlag(f8) Then t &= "Bad configuration; "
  Return If( t<>"", t.TrimEnd("; "),"Unknown")
End Function

<Flags>
Enum FailFlag
  f1 = 1
  f2 = 2
  f4 = 4
  f8 = 8
End Enum

সম্পাদনা: ভাল প্রবেশিকা

Function StateText(f As FailFlag) As String
  If f = 0 Then Return "No Technical Alarm"
  Dim t = String.Join("; ",
            From e In [Enum].GetValues(GetType(FailFlag))
            Where f.HasFlag(e)
            Select [Enum].GetName(GetType(FailFlag), e).Replace("_", " "))
  Return If( t<>"", t,"Unknown")
End Function

<Flags>
Enum FailFlag
  Detection_zones_staying_in_a_given_state = 1
  Bad_visibility = 2
  Initialization = 4
  Bad_configuration = 8
End Enum

0

পার্ল, 208 197 অক্ষর

$f=$FailSafe;%m=(1,'Detection zones staying in a given state',2,'Bad visibility',4,'Initialization',8,'Bad configuration');($f?join'; ',@m{map{$f&$_?$_:()}1,2,4,8}:'No technical alarms')||'Unknown'

এটিকে কাজ করার জন্য বয়লারপ্লেট কোড সহ:

#!/usr/bin/env perl
$FailSafe=17;
print failmsg() . "\n";

sub failmsg {
$f=$FailSafe;%m=(1,'Detection zones staying in a given state',2,'Bad visibility',4,'Initialization',8,'Bad configuration');($f?join'; ',@m{map{$f&$_?$_:()}1,2,4,8}:'No technical alarms')||'Unknown'
}

কোডটি পুনরায় পড়ুন: সীমা পরীক্ষা নেই।
টাইটানফোল্ড

0

জাভা 275 টি অক্ষর ( অপ্রয়োজনীয় সাদা স্থান গণনা করা হচ্ছে না )

    String s = "";
    int b = 1;
    for (String m : new String[]{"Detection zones staying in a given state; ","Bad visibility; ", "Initialization; ", "Bad configuration; "}) {
        if ((FailSafe & b) != 0) s = s + m;
        b <<= 1;
    }
    return (s.length() == 0) ? (FailSafe == 0) ? "No technical alarms" : "Unknown" : s.substring(0, s.length() - 2);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.