বড় কোড ... আপনার জন্য!


32

ডার্ক নাইটের উদ্বোধনী দৃশ্যে, সিআইএ এজেন্ট এবং ভিলেন বেনের মধ্যে একটি বরং বিশ্রী কথোপকথন চলছে ।

সিআইএ এজেন্ট: "আমি যদি [মুখোশ] কেটে ফেলি তবে আপনি মারা যাবেন?"

বেন: "এটি অত্যন্ত বেদনাদায়ক হবে ..."

সিআইএ এজেন্ট: "আপনি অনেক বড় লোক"।

বেন: "... আপনার জন্য।"

বেন "আপনার জন্য বেদনাদায়ক" বা "আপনার জন্য বড় লোক" বলতে চান কিনা তা নিশ্চিত নয়। কোড গল্ফিংয়ের মাধ্যমে একবারে এই সমস্যাটি সমাধান করুন!

চ্যালেঞ্জ

আপনার কাজটি এমন একটি প্রোগ্রাম লেখা যা ইনপুট হিসাবে প্রদত্ত পূর্ণসংখ্যার উপর নির্ভর করে উপরের কথোপকথনের পুনঃক্রম করে।

সিআইএ এজেন্টের কথোপকথনের শব্দগুলি হ'ল: If I pull that off will you die? You're a big guy.

বানের সংলাপের শব্দগুলি হ'ল: It would be extremely painful... for you!

দয়া করে মনে রাখবেন die?, You’re, painful...এবং you!একক শব্দ হিসেবে বিবেচিত হয়।

  1. ইনপুট হিসাবে একটি পূর্ণসংখ্যা n দেওয়া হয়েছে, এটি বাইনারি রূপান্তর করুন
  2. বাইনারি অঙ্কগুলি বাম থেকে ডানদিকে পড়া, অঙ্কটি হলে সিআইএ এজেন্ট কথোপকথনের 1পরবর্তী শব্দটি এবং অঙ্কটি বেন সংলাপ থেকে পরবর্তী শব্দটি আউটপুট করুন 0। শব্দগুলি একটি স্পেস দ্বারা পৃথক করা উচিত। স্পিকার পরিবর্তন হলে, একটি লাইন ফিড যুক্ত করুন। এছাড়াও, স্পিকারের নাম ( BANE:বা CIA:) এর সাথে প্রতিটি সংলাপের রেখা উপসর্গ করুন ।

আপনি ধরে নিতে পারেন যে ইনপুটটি সর্বদা বাইনারি আকারে 1 দিয়ে শুরু হয় এবং এতে 12 টি এবং 7 টি শূন্য রয়েছে।

উদাহরণ

522300

  1. বাইনারি রূপান্তরিত: 1111111100000111100

  2. সংখ্যাটি 8 টি দিয়ে শুরু হয়, সুতরাং আমরা সিআইএর এজেন্ট কথোপকথনের 8 টি প্রথম শব্দ আউটপুট করি এবং সেগুলি সিআইএর সাথে উপসর্গ করেছি: CIA: If I pull that off will you die?

  3. তারপরে আমরা 5 টি শূন্য পেয়েছি, সুতরাং আমরা বানের কথোপকথনের 5 টি প্রথম শব্দ পেয়েছি: BANE: It would be extremely painful...

  4. তারপরে 4 টি রয়েছে, সুতরাং আমরা পরবর্তী 4 টি সিআইএ শব্দ আউটপুট করব: CIA: You’re a big guy.

  5. তারপরে 2 শূন্য: BANE: for you!

সর্বশেষ ফলাফল:

CIA: If I pull that off will you die?
BANE: It would be extremely painful...
CIA: You’re a big guy.
BANE: for you!

আরও পরীক্ষার কেস:

494542

CIA: If I pull that
BANE: It would be
CIA: off
BANE: extremely
CIA: will you die? You're
BANE: painful... for
CIA: a big guy.
BANE: you!

326711

CIA: If
BANE: It would
CIA: I pull that off will you
BANE: be extremely painful... for
CIA: die? You're
BANE: you!
CIA: a big guy.

প্রতিটি লাইন একটি স্পেসে শেষ হতে পারে?
xnor

@ এক্সনর হ্যাঁ, ঠিক আছে।
আরনাউড


@ মিস্তাকে "এটি" ঠিক করা হয়েছে, ধন্যবাদ!
Arnaud

3
এটি কি আমি বা কেউ বেনের কন্ঠে সংলাপটি পড়েছি।
গুরুপদ মামাদাপুর

উত্তর:


10

পাইথ - 138 বাইট

মুভি স্ক্রিপ্টটি সংকুচিত করা উচিত।

K_cc"guy big a You're die? you will off that pull I If you! for painful... extremely be would That"d12jmj;++@c"BANECIA"4ed\:m.)@Kedhdr8jQ2

টেস্ট স্যুট


7

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

সম্পাদনা: ETH প্রোডাকশন উত্তরtrim() থেকে নির্লজ্জভাবে ধার ধারন করে 2 বাইট সংরক্ষণ করা

n=>"If I pull that off will you die? You're a big guy. It would be extremely painful... for you!".split` `.map((_,i,a)=>[`
BANE: `,`
CIA: `,' '][j^(j=n>>18-i&1)?j:2]+a[k[j]++],k=[j=12,0]).join``.trim()

পরীক্ষার মামলা


7

জাভাস্ক্রিপ্ট (ES6), 209 202 201 বাইট

(n,a="It would be extremely painful... for you! If I pull that off will you die? You're a big guy.".split` `,b=[6,18])=>(F=(s,p=n%2)=>n?F((p^(n>>=1)%2?p?`
CIA: `:`
BANE: `:` `)+a[b[p]--]+s):s.trim())``

পুরানো পদ্ধতির:

(n,a="If I pull that off will you die? You're a big guy. It would be extremely painful... for you!".split` `,b=[12,0])=>(F=p=>p^n%2?F(n%2)+(p?`
CIA:`:`
BANE:`):n?F(p,n>>=1)+" "+a[b[p]++]:``)(n%2).trim()

পরীক্ষার স্নিপেট

f=(n,a="It would be extremely painful... for you! If I pull that off will you die? You're a big guy.".split` `,b=[6,18])=>(F=(s,p=n%2)=>n?F((p^(n>>=1)%2?p?`
CIA: `:`
BANE: `:` `)+a[b[p]--]+s):s.trim())``

console.log(f(522300))
console.log(f(494542))
console.log(f(326711))


আমি নির্লজ্জভাবে আপনার trim()ধারণা ধার নিচ্ছি । আমি নিশ্চিত যে এর চেয়ে ভাল কিছু আছে slice(1)তবে তা বের করতে পারিনি।
আর্নল্ড

@ আরনাউল্ড আমার সাথে ভাল, এখন আমরা সবাই জোট বেঁধেছি। আমি বাজি
ধরছি

6

সি ++ 11 (জিসিসি), 298 293 বাইট

#include<sstream>
[](int i){std::stringstream b("It would be extremely painful... for you!"),c("If I pull that off will you die? You're a big guy.");std::string s,w;int n=0,t=i,p;while(t/=2)n++;for(;n>=0;p=t)((t=i>>n&1)?c:b)>>w,s+=p^t?t?"CIA: ":"BANE: ":" ",s+=t^(i>>--n)&1?w+"\n":w;return s;}

একটি ল্যাম্বদা ফাংশন যা একটি পূর্ণসংখ্যা নেয় এবং কথোপকথনটিকে হিসাবে প্রদান করে std::string। আপনি এখানে এটি কর্মে দেখতে পাবেন ।

অবরুদ্ধ সংস্করণ (কিছু ব্যাখ্যা সহ):

#include<sstream>

[](int i) {
    std::stringstream bane("It would be extremely painful... for you!"),
                      cia("If I pull that off will you die? You're a big guy.");
    std::string s, w;
    int n = 0, t = i, p;
    // Find the position of the most significant bit (n)
    while (t/=2) n++;

    for (; n>=0; p=t) {
        t = i>>n&1; // Current bit
        // Append the speaker name if the previous bit was different
        if (t != p) s += (t ? "CIA: " : "BANE: ");
        else s += " ";

        // Read the next word from one of the streams
        if (t) cia >> w;
        else bane >> w;

        s += w;

        if (t != ((i>>--n)&1)) // Append a newline if the next bit is different
            s += "\n";
    }

    return s;
}

4

জাভাস্ক্রিপ্ট (ES6), 252 227 226 বাইট

n=>[...n.toString(2,b="If I pull that off will you die? You're a big guy.".split` `,c="It would be extremely painful... for you!".split` `)].map((a,i,j)=>(a!=j[i-1]?+a?i?`
CIA: `:`CIA: `:`
BANE: `:``)+(+a?b:c).shift()).join` `

ব্যবহার

f=n=>[...n.toString(2,b="If I pull that off will you die? You're a big guy.".split` `,c="It would be extremely painful... for you!".split` `)].map((a,i,j)=>(a!=j[i-1]?+a?i?`
CIA: `:`CIA: `:`
BANE: `:``)+(+a?b:c).shift()).join` `
f(522300)

নোট

এটি গল্ফ-ইন-প্রগতিশীল, আমি মনে করি আমি এখনও কিছু বাইট ছাঁটাই করতে পারি, তবে মন্তব্যগুলিতে পরামর্শ দিতে নির্দ্বিধায়।


4

পাইথন 3.6, 232 বাইট

from itertools import*
c="you! for painful... extremely be would It".split(),"guy. big a You're die? you will off that pull I If".split()
for n,r in groupby(f'{int(input()):b}',int):
 print("BCAINAE::"[n::2],*[c[n].pop()for _ in r])

সমতুল্য সম্পাদনা করুন :

from itertools import*
c="It would be extremely painful... for you!".split(),"_ If I pull that off will you die? You're a big guy.".split()
for n,r in groupby(map(int,f'{int(input()):b}')):
 print("BCAINAE::"[n::2],*map(c[n].pop,r))


2

পার্ল 6 , 211 বাইট

{.put for map |*,zip map {.[0]X .[1].rotor: .[2..*]},zip <CIA: BANE:>,(<If I pull that off will you die? You're a big guy.>,<It would be extremely painful... for you!>),|(.base(2)~~m:g/(.)$0*/)».chars.rotor(2)}

2

সি #, 398 390 385 396 389 বাইট

class P{static void Main(string[] a){string s="2"+System.Convert.ToString(int.Parse(a[0]),2),e="CIA: ",r="BANE: ",o="";int k=0,l=0,i=1;string[] c="If I pull that off will you die? You're a big guy.".Split(' '),b="It would be extremely painful... for you!".Split(' ');for(;i<s.Length;i++)o+=(s[i-1]==s[i]?" ":(i<2?"":"\n")+(s[i]>'0'?e:r))+(s[i]>'0'?c[k++]:b[l++]);System.Console.Write(o);}}

প্যারামিটার হিসাবে ইনপুট নম্বর দিয়ে চালু করুন।

Ungolfed:

class P
{
    static void Main(string[] a)
    {
        string s = "2" + System.Convert.ToString(int.Parse(a[0]), 2), e = "CIA: ", r = "BANE: ", o = "";
        int k = 0, l = 0, i = 1;

        string[] c = "If I pull that off will you die? You're a big guy.".Split(' '), b = "It would be extremely painful... for you!".Split(' ');
        for (; i < s.Length; i++)
            o += (s[i - 1] == s[i] ? " " : (i<2?"":"\n") + (s[i] > '0' ? e : r))
                + (s[i] > '0' ? c[k++] : b[l++]);
        System.Console.Write(o); 
    }
}

396 বাইটে ফিরে যান কারণ আমি "শুরুতে কোনও নিউলাইন" রুলটি লক্ষ্য করি নি।


দুঃখের বিষয়, s.Replace("1",c[k++]).Replace("0",b[l++])সম্পর্কিত শব্দগুলির সাথে প্রতিস্থাপন করা হবে না। দেখে মনে হচ্ছে, সি # একবারে স্ট্রিং প্রতিস্থাপন করে এবং এটি জায়গায় স্থির করে দেয়।
মিঃ স্কেপগ্র্যাস

2

রুবি, 204 + 1 = 205 বাইট

-nপতাকা প্রয়োজন ।

d=[%w"It would be extremely painful... for you!",%w"If I pull that off will you die? You're a big guy."]
n=%w"BANE CIA"
("%b"%$_).scan(/((.)\2*)/).map{|i,b|puts n[k=b.to_i]+': '+d[k].slice!(0,i.size)*' '}

2

পিএইচপি, 198 বাইট

while($i++<19)echo($t-$s=1&$argv[1]>>19-$i)?"
"[$i<2].($s?CIA:BANE).": ":" ",explode(0,"It0would0be0extremely0painful...0for0you!0If0I0pull0that0off0will0you0die?0You're0a0big0guy.")[$$s+++7*$t=$s];

1

পার্ল, 205 বাইট

@t=([qw/It would be extremely painful... for you!/],[qw/If I pull that off will you die? You're a big guy./]);$_=sprintf'%b',$0;print$n?'BANE':'CIA',": @{[splice$t[$n=1-$n],0,length$&]}"while s/(.)\1*//;

এটি 494542 নামের একটি ফাইলের মধ্যে রাখুন এবং এটির মতো চালান:

perl -lX 494542

পার্ল v5.22 এ পরীক্ষিত


1

ক্লোজার, 401 বাইট

(require '[clojure.string :as s])(defn f[n](let[c(map #(-(int %) 48)(Integer/toString n 2))p[(s/split"It would be extremely painful... for you!"#" ")(s/split"If I pull that off will you die? You're a big guy."#" ")]a["BANE" "CIA"]](loop[i[0 0] g"" d c q 2](if(<(count d)1)g(let[b(first d)j(i b)](recur(assoc i b (inc j))(str g(if(= b q)" "(str(when(not= 2 q)"\n")(a b)": "))((p b) j))(rest d) b))))))

আবাহন:

(f 522300)

Ungolfed

(require '[clojure.string :as s])
(defn dialogue[num]
    (let [dacode (map #(- (int %) 48) (Integer/toString num 2))
          phrases [(s/split"It would be extremely painful... for you!"#" ")(s/split"If I pull that off will you die? You're a big guy."#" ")]
      actors ["BANE" "CIA"]]
      (loop [idxs [0 0] finaldial "" code dacode prevbit 2]
        (if (< (count code) 1) finaldial
            (let [bit (first code) idx (idxs bit)]
              (recur (assoc idxs bit (inc idx)) (str finaldial (if (= bit prevbit) " " (str (when (not= 2 prevbit) "\n") (actors bit) ": ")) ((phrases bit) idx)) (rest code) bit))))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.