ইন্টারকলের বাইনারি অপারেটরগুলি প্রয়োগ করুন


29

সংমিশ্রিত ইন্টারক্যাল সংমিশ্রণহীন কোনও অ্যাক্রোনিয়াম সংমিশ্রনের সংকলক ভাষাটি একটি খুব অনন্য প্রোগ্রামিং ভাষা। এর অপ্রতিশোধনযোগ্য গুণাবলীর মধ্যে এর বাইনারি অপারেটরগুলিও রয়েছে।

INTERCAL দুই বাইনারি অপারেটর হয় ইন্টারলিভ (নামেও পরিচিত মিশতে ), এবং নির্বাচন । ইন্টারলিভ একটি পরিবর্তন (¢) দ্বারা প্রতিনিধিত্ব করা হয়, এবং নির্বাচন একটি sigiggle (~) দিয়ে প্রতিনিধিত্ব করা হয়।

ইন্টারলিভ 0-65535 পরিসরে দুটি সংখ্যা নিয়ে এবং তাদের বিটগুলি পর্যায়ক্রমে কাজ করে। এই ক্ষেত্রে:

234 ¢ 4321
234   = 0000011101010
4321  = 1000011100001
Result: 01000000001111110010001001
Output: 16841865

প্রথম অপারেন্ডে বিটগুলি যা দ্বিতীয় অপারেন্ডে 1s হিসাবে একই অবস্থানে রয়েছে এবং সেই বিটগুলি ডানদিকের প্যাকিং করে 0-65535 পরিসরে দুটি সংখ্যা নিয়ে কাজগুলি নির্বাচন করুন।

2345 ~ 7245
2345  = 0100100101001
7245  = 1110001001101
Taken : 010   0  10 1
Result: 0100101
Output: 37

এই চ্যালেঞ্জে, আপনাকে ইন্টারলিভ বা নির্বাচন অপারেশন ব্যবহার করে একটি বাইনারি এক্সপ্রেশন দেওয়া হবে। সম্ভাব্য কয়েকটি বাইট ব্যবহার করে আপনাকে অবশ্যই ফলাফলটি গণনা করতে হবে।

0-65535 তে একটি পূর্ণসংখ্যা, একটি স্থান, ¢বা ~একটি স্থান, এবং 0-65535 তে একটি পূর্ণসংখ্যা সমন্বয়ে একটি স্পেস বিভাজনযুক্ত স্ট্রিং হিসাবে অভিব্যক্তিটি দেওয়া হবে ।

ইনপুট এবং আউটপুট যে কোনও স্ট্যান্ডার্ড সিস্টেমের মাধ্যমে (এসটিডিআইএন, ফাংশন, কমান্ড লাইন ইত্যাদি) হতে পারে। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে।

উদাহরণ:

5 ¢ 6
54

5 ~ 6
2

51234 ¢ 60003
4106492941

51234 ~ 60003
422

এটি কোড গল্ফ - সবচেয়ে কম বাইট জেতা। শুভকামনা।

সম্পাদনা: যেহেতু কিছু ভাষা ইন্টারকালের পরিবর্তনের (¢) প্রতীককে সমর্থন করে না, আপনি তার পরিবর্তে 5 বাইট জরিমানার মাধ্যমে বড় অর্থ ($) চিহ্ন ব্যবহার করতে পারেন।


10
ডলার সাইন ব্যবহারের জন্য লোককে কিছুটা দণ্ডিত করা। এটি এমন কিছু যা সাহায্য করা যায় না।
বিটা ক্ষয়

9
আমি ঠিক বুঝতে পেরেছি যে CLWNPA ওয়েলশ ভাষায় পুরোপুরি সর্বনামযোগ্য pron ডাব্লু স্প্যানিশ ভাষায় ইউ বা ইংরেজিতে ওও হিসাবে উচ্চারিত হয়।
স্তর নদী সেন্ট

9
আমি 5 বাইট পেনাল্টি পাই না। সি-ইন্টারকল ব্যবহার করে $
kirbyfan64sos

13
আপনারা কী নিয়ে তর্ক করছেন? একটি than এর তুলনায় এ clearly স্পষ্টতই বেশি ব্যয়বহুল ¢ কি, আপনি 99 ¢ কোন কিছুর জন্য চান?
সর্বাধিক

6
আমি ভাবি নি যে ইন্টারকাল আপনাকে দশমিক সংখ্যার সাথে সংখ্যার ইনপুট দেওয়ার অনুমতি দেবে। আপনার কি লিখতে হবে না FIVE ONE TWO THREE FOUR? এবং আউটপুটটি রোমান সংখ্যায় হওয়া উচিত নয়?
নেট এল্ডারেজ

উত্তর:


9

পাইথ, 32 31 29 বাইট

isummFdG}\~zCm.[Z16jvd2%2cz)2

এটি অনলাইনে ব্যবহার করে দেখুন: নিয়মিত ইনপুট / টেস্ট স্যুট

একটি বাইকে গল্ফ করে দেওয়ার জন্য @ আইস্যাককে ধন্যবাদ।

ব্যাখ্যা:

                         cz)   split input at spaces
                       %2      only take every second item (the numbers)
             m                 map each number d to:
                    vd           convert d to int
                   j  2          convert to base 2
              .[Z16              pad zeros at the left
            C                  zip
  u     }\~z                   apply the following function ("~" in input) times:
   m   G                         map each pair d to:
    mFd                          convert [x,0] to [] and [x,1] to [x]
 s                             take sum (unfold all lists)
i                           2  convert back from base 2 and print

আপনি পরিবর্তন hMfeTকরে smmFdএবং তারপরে ডুপ্লিকেটটি sটার্নেরির বাইরে নিয়ে গিয়ে একটি বাইট সংরক্ষণ করতে পারেন । এছাড়াও, আপনার বর্তমান কোডটি 32 বাইট, 33 নয়
ISAacg

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

2
পাইথ এবং সিজেমের উত্তরগুলি দেখতে খুব আকর্ষণীয়, প্রায় সবসময় একই বাইট গণনা হয়, তবে পাইথ প্রায়শই সিজে্যামকে কয়েক দ্বারা পরাজিত করে
কামেট্রিক্সম

13

পাইথন 2, 115 112 বাইট

x,y,z=input().split()
d=y<""
f=lambda a,b:a+b and(b%2+5&4-d)*f(a/2,b/2)+(a%2*2+b%2)/3**d
print f(int(x),int(z))

দ্বিতীয় লাইনের স্ট্রিংটিতে একটি একক অরক্ষিত অক্ষর রয়েছে \x7d, পরের চরটি ~

একটি সুন্দর, একক লাম্বদা সমস্ত আশা ইনপুট ফর্ম্যাট দ্বারা চূর্ণ করা হবে। ইনপুট পড়ার সম্ভবত আরও ভাল উপায় আছে। "51234 ¢ 60003"STDIN এর মাধ্যমে ইনপুট করুন।

ফাংশন fনিম্নলিখিত দুটি পুনরাবৃত্ত ফাংশন একত্রিত:

g=lambda a,b:a+b and 4*g(a/2,b/2)+a%2*2+b%2    # ¢
h=lambda a,b:a+b and(b%2+1)*h(a/2,b/2)+a*b%2   # ~

(@Xnor এর সাহায্যে 3 বাইট)


1
প্রথম সত্যিকারের প্রতিযোগিতামূলক পাইথন উত্তরের জন্য +1। আমি ভাবছিলাম যে আপনি ল্যাম্বদা নিয়ে কেন বিরক্ত হয়েছেন এবং কেবল একটি অভিব্যক্তি ব্যবহার করেন নি, তবে দেখে মনে হচ্ছে সেখানে কিছু পুনরাবৃত্তি আছে? আমি পাইথন জানি না, আমি একটি ব্যাখ্যার অপেক্ষায় রয়েছি।
লেভেল রিভার সেন্ট

কিছু দুর্দান্ত বিট! আমি ধ্রুবক শব্দ অভিব্যক্তি সংক্ষেপে তাকান। এক্সপ্রেশন (a%2*2+b%2)/3**d3 টি অক্ষর সাশ্রয় করে তবে পরিপূরক ব্যবহার করে d=1-c। পরিপূরকটি করার কোনও উপায় আছে -~(3*c|b%2)? সবচেয়ে খারাপ সময়ে এটি 2 টির সাথে হারায় 3-3*d। এছাড়াও, কোনও চিহ্ন বা সংখ্যা দিয়ে শুরু হওয়া অবধি ফর্ম্যাটটি দীর্ঘ and-~x+yহতে পারে । andy-~xy
xnor

@ এক্সনর বুঝেছি (b%2+5&4-d),। ধন্যবাদ!
Sp3000

11

সিজেম, 31 বাইট

rrc\r]{i2bF0e[}%(7=\zf{_)*?~}2b

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

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

rr                              e# Read two tokens from STDIN.
  c\                            e# Cast the second to char and swap with the first.
    r                           e# Read a third token from STDIN.
     ]                          e# Wrap everything in an array.
      {       }%                e# For all three elements:
       i2b                      e#   Cast to int and convert to base 2.
          F0e[                  e#   Left-pad with zeroes to complete 15 digits.
                (               e# Shift out the first base 2 array.
                 7=             e# Select its eighth MSB (1 for '¢', 0 for '~').
                   \            e# Swap with the array of base 2 arrays.
                    z           e# Zip to transpose rows with columns.
                     f{     }   e# For each pair of base 2 digits:
                                e#   Push the bit, then the pair.
                       _        e#   Copy the pair.
                        )       e#   Pop the second digit.
                         *      e#   Repeat the first digit that many times.
                          ?     e#   Ternary if. Select the pair if the bit is
                                e#    truthy, the repeated first bit if it's falsy.
                           ~    e#   Dump the selected array on the stack.
                             2b e# Convert from base 2 to integer.

8

জাভাস্ক্রিপ্ট (ES6), 103 117 119 124

স্ট্রিংয়ের পরিবর্তে সংখ্যা সহ এখনই সম্পাদনা করুন

(শীর্ষস্থানীয় স্থান, নিউলাইন এবং মন্তব্যগুলি গণনা করা হচ্ছে না)

যে কোনও ইকামাস্ক্রিপ্ট comp অনুবর্তী ব্রাউজারে স্নিপেট চলমান পরীক্ষা করুন (উল্লেখযোগ্যভাবে ক্রোম এমএসআইই নয়। আমি ফায়ারফক্সে পরীক্ষা করেছি, সাফারি 9 যেতে পারে)

I=s=>
  (i=>{
    for(m=r=0,[a,o,b]=s.split` `;i>0;i<<=1) // loop until bit 31 of i is set
      o>'~'?r+=(b&i)*i+(a&i)*2*i:b&i?r+=(a&i)>>m:++m
  })(1)||r


// TEST
out=x=>O.innerHTML+=x+'\n\n';

[ ['234 ¢ 4321', 16841865], ['2345 ~ 7245', 37]
, ['5 ¢ 6', 54], ['5 ~ 6', 2]
, ['51234 ¢ 60003',4106492941], ['51234 ~ 60003', 422]]
.forEach(([i,o,r=I(i)])=>{
  out('Test '+ (o==r?'OK':'Fail')+'\nInput:    '+ i+'\nResult:   '+r+'\nExpected: '+o)})
<pre id=O></pre>


5

মতলব, 119 113 বাইট

function f(s)
t=dec2bin(str2double(strsplit(s,{'¢' '~'}))');u=any(s>'~');[~u u]*bin2dec({t(1,t(2,:)==49) t(:)'})

Ungolfed:

function f(s)                                     % input s is a string
t = dec2bin(str2double(strsplit(s,{'¢' '~'}))');  % get the two numbers and convert to
                                                  % two-row char array of zeros of ones
u = any(s>'~');                                   % 1 indicates '¢'; 0 indicates '~'
[~u u]*bin2dec({t(1,t(2,:)==49) t(:)'})           % compute both results and display
                                                  % that indicated by u

উদাহরণ:

>> f('234 ¢ 4321')
ans =
    16841865

>> f('2345 ~ 7245')
ans =
    37

5

আর, 145 বাইট

s=scan(,"");a=as.double(c(s[1],s[3]));i=intToBits;cat(packBits(if(s[2]=="~")c(i(a[1])[i(a[2])>0],i(0))[1:32] else c(rbind(i(a[2]),i(a[1]))),"i"))

অবহেলিত + ব্যাখ্যা:

# Read a string from STDIN and split it on spaces
s <- scan(, "")

# Convert the operands to numeric
a <- as.double(c(s[1], s[3]))

o <- if (s[2] == "~") {
    # Get the bits of the first operand corresponding to ones in
    # the second, right pad with zeros, and truncate to 32 bits
    c(intToBits(a[1])[intToBits(a[2]) == 1], intToBits(0))[1:32]
} else {
    # Interleave the arrays of bits of the operands
    c(rbind(intToBits(a[2]), intToBits(a[1])))
}

# Make an integer from the raw bits and print  it to STDOUT
cat(packBits(o, "integer"))

5

পাইথন 3, 174 166 148 126

বেশ সোজা, স্ট্রিং অপারেশন, তারপরে পূর্ণসংখ্যায় রূপান্তর।

বাইনারিতে 99 অঙ্ক রয়েছে এমন সংখ্যায় সীমাবদ্ধ (সর্বোচ্চ 2 ^ 99-1 = 633825300114114700748351602687)।

ধন্যবাদ, Sp3000 এবং Vioz!

a,o,b=input().split()
print(int(''.join([(i+j,i[:j>'0'])[o>'~']for i,j in zip(*[bin(int(j))[2:].zfill(99)for j in(a,b)])]),2))

বা 165 অক্ষর, সীমা ছাড়াই:

a,o,b=input().split()
a,b=[bin(int(j))[2:]for j in(a,b)]
print(int(''.join([(i if j=='1'else'')if o=='~'else i+j for i,j in zip(a.zfill(len(b)),b.zfill(len(a)))]),2))

Ungolfed:

a, op, b = input().split()
a, b = [bin(int(j))[2:] for j in(a,b)] #convert to int (base 10), then to binary, remove leading '0b'
m = max(len(a), len(b))
a = a.zfill(m) #fill with leading zeroes
b = b.zfill(m)
if op == '~':
    ret = [i if j=='1' else'' for i, j in zip(a, b)]
else:
    ret = [i + j for i, j in zip(a, b)]
ret = ''.join(ret) #convert to string
ret = int(ret, 2) #convert to integer from base 2
print(ret)

2
আপনি zfillrjust
জিরো

ইনপুটস 16 বিট থেকে সর্বাধিক আউট, এবং 32 বিট আউটপুট। 99 বিট যথেষ্ট পরিমাণে বেশি।
isaacg

আমি জানি, তবে যেহেতু'৯৯ '' ১ 16 'এর মতো চরিত্র গ্রহণ করে, তাই এটি সীমাবদ্ধ করার কোনও সুবিধা নেই।
ট্রাং ওউল

1
আরও কয়েকটি: 1) আপনার সংরক্ষণ করার দরকার নেই a,b, কেবল zipএকটি *স্প্ল্যাট দিয়ে এটিকে রাখুন , ২) (i if j=='1'else'') -> i[:j>'0']3) আপনি এই টিপটিif/else
অন্যটিতে

1
আমার সমাধানটি আপনার খুব কাছাকাছি থাকার অবসান ঘটেছে, সুতরাং আমি আপনার (126 বাইট) পেতে পারার মতো এখানে ছোট।
কেড

4

পাইথ, 43 বাইট

আমার বেশিরভাগ অংশ ইসহাকের প্রশ্নের উপর এত দীর্ঘ পাইথ উত্তর পোস্ট করে নার্ভাস বোধ করছে ...: ওপি

J.(Kczd1Am.BvdKiu?qJ\~u+G?qeH\1hHk+VGHk.iGH2

Explaination:

                                               Implicit: z=input(), k='', d=' '
   Kczd                                        Split z on spaces, store in K
J.(    1                                       Remove centre element from K, store in J
         m    K                                For each d in K
          .Bvd                                 Evaluate as int, convert to binary string
        A                                      Store pair in G and H
                                               ~ processing:
                                 +VGH          Create vectorised pairs ([101, 110] -> [11, 01, 10])
                     u               k         Reduce this series, starting with empty string
                        ?qeH\1                 If 2nd digit == 1...
                              hHk              ... take the 1st digit, otherwise take ''
                      +G                       Concatenate
                                      .iGH     ¢ processing: interleave G with H
                ?qJ\~                          If J == ~, take ~ processing, otherwise take ¢
               i                          2    Convert from binary to decimal

4
আমি তোমার প্রোফাইল পিকচারটা ভালবাসি! :)
kirbyfan64sos

2
@ kirbyfan64sos নীল কারবি উত্তম কারবি হে)
সোক

3

সি, 127 123 বাইট + 5 জরিমানা = 128

scanfইউনিকোড প্রতীককে একাধিক চরিত্র হিসাবে গণ্য করে যা জিনিসগুলিকে অনেক জটিল করে তোলে, তাই আমি ব্যবহারের জন্য 5-বাইট জরিমানা প্রয়োগ করছি $

a,b,q,x,i;main(){scanf("%d %c %d",&a,&q,&b);for(i=65536;i/=2;)q%7?x=x*4|a/i*2&2|b/i&1:b/i&1&&(x=x*2|a/i&1);printf("%u",x);}

মূল সংস্করণ থেকে পরিবর্তনগুলি হ'ল:

-$ বা ~ এর জন্য পরীক্ষাটি থেকে সংশোধন করা q&2হয়েছে q%7। এটি সত্য / মিথ্যা মানগুলিকে বিপরীত করে $ অপারেটরের কোডটি যার আগে :প্যারেন্টেসিসের সেটটি মুছে ফেলা যায় তার আগে যেতে দেয় ।

- iলুপটি এখন 2 এর ক্ষমতায় গণনা করে যা দীর্ঘতর, তবে এর >>দ্বারা প্রতিস্থাপিত হওয়ার অনুমতি দেয়/ কিছু বন্ধনী সংরক্ষণের ।

আসল সংস্করণ 127 বাইট

a,b,q,x,i;
main(){
  scanf("%d %c %d",&a,&q,&b);
  for(i=16;i--;)
    q&2?
      b>>i&1&&(x=x*2|a>>i&1):    // ~ operator. && used as conditional: code after it is executed only if code before returns truthy.
      (x=x*4|(a>>i&1)*2|b>>i&1); // $ operator
  printf("%u",x);
}

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


আমি এটি আপনার জন্য গল্ফ করেছি: প্রধান (ক, বি, কিউ, এক্স, আই) {স্ক্যানফ ("% d% সি% ডি", এবং এ, & কি, & বি); (i = 16; i -;) Q & 2 এর জন্য? খ >> I & 1 && (X = এক্স * 2 | একটি >> I & 1) :( X = এক্স * 4 | (ক >> I & 1) * 2 | খ >> I & 1); printf, ( "% U", x) এর;} আমি >> আমি & 1 অংশগুলি গল্ফ করার চেষ্টা করেছি, তবে এটি করার জন্য কোনও কার্যকর কার্যকর উপায় খুঁজে পাইনি। আমি ভেরিয়েবল সংজ্ঞাটি মূলত রেখে 1 টি অক্ষর সংরক্ষণ করতে সক্ষম হয়েছি। দ্রষ্টব্য: অরক্ষিত
লাম্বদাবেতা

@ লামদাবেতা ধন্যবাদ, আমি >> আমি এবং 1 এর জন্য ম্যাক্রো খুঁজে পাইনি তবে আমি এটি অন্যভাবে গল্ফ করতে পেরেছি। ভেরিয়েবলগুলি আমার মেশিনে দূষিত হওয়ার mainকারণগুলির যুক্তি হিসাবে স্থাপন qকরা, যা আশ্চর্যজনক। আমি আশা করি আসল সমস্যাটিই রয়েছে scanfতবে এ কারণে আমি এগুলিকে সাধারণ ঘোষণা হিসাবে রেখে দিয়েছি।
স্তর নদী সেন্ট

আমি এটা ভাবিনি। আপনি ঠিক বলেছেন, কিউ দূষিত হবে। কারণটি হ'ল আমরা যখন শিখতে পারি যে মূল দুটি আর্গুমেন্ট গ্রহণ করে, কমান্ড-লাইন আর্গুমেন্টের গণনা এবং আর্গুমেন্টের একটি অ্যারে নিজেই, বেশিরভাগ সিস্টেমগুলি আসলে একটি তৃতীয় আর্গুমেন্ট সরবরাহ করে (সাধারণত চর * এনভিপি [] নামে পরিচিত যা পরিবেশকে কোড বর্ণনা করে) চালানো হয় (EG এ প্রবেশাধিকার প্রদান: পরিবেশের ভেরিয়েবল)। সুতরাং প্রধান তৃতীয় মানটিও সিস্টেম দ্বারা একটি মূল্য নির্ধারিত হতে পারে, স্ক্যানফ এবার নির্দোষ।
লাম্বদাবেতা

@ স্টেভেরিল আমি মনে করি আপনি 5 বাইট পেনাল্টিও সরাতে পারেন। আমি সবেমাত্র আপনার কোড পরীক্ষা করেছি (¢ বানাতে ALT + 155 ব্যবহার করে) এবং এটি দুর্দান্ত কাজ করছে বলে মনে হচ্ছে। :)
লাম্বদাবেতা

@ লাম্বদাবেতা আসলে পরীক্ষাগুলি দেখায় এটি উভয়ের সংমিশ্রণ। সাধারণ ঘোষণাটি qশূন্যের গ্যারান্টিযুক্ত তবে ফাংশন প্যারামিটার হিসাবে ঘোষণার সাথেq 32-বিট আবর্জনা থাকে। এটা একটা সমস্যা যদি আমি না নির্ধারিত একটি মান q, কিন্তু scanfসঙ্গে "%c"শুধুমাত্র আবর্জনা অন্তত উল্লেখযোগ্য 8 বিট মুছে ফেলা, অন্য 24 undefined রেখে। আমি অন্য সংকলক ভাগ্যবান পেতে পারে!
স্তর নদী সেন্ট

3

কে 5, 53 52 বাইট

{b/({,/x,'y};{x@&y})[*"~"=y][b\.x;(b:20#2)\.z]}." "\

53-বাইট সংস্করণ:

{b/({,/x,'y};{x@&y})[*"¢~"?y][b\.x;(b:20#2)\.z]}." "\

তবু আরও কিছু গল্ফ দরকার।


3

CJam, 61 50 46 41 34 বাইট

একটি 4 বাইট গল্ফ নির্দেশ করার জন্য @ ডেনিস ধন্যবাদ

rrc'~=:X;r]{i2bF0e[}/.{X{{;}|}&}2b

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


1
]{}/একটি নূপুর
ডেনিস

1
@ ডেনিস ধন্যবাদ আমার সম্ভবত কিছুটা ঘুম হওয়া উচিত ...
Andrea Biondo

3

হাস্কেল, 77

g=(`mod`2)
h=(`div`2)
0¢0=0
a¢b=g a+2*b¢h a
a?0=0
a?b=g a*g b+(1+g b)*h a?h b

ফাংশন / অপারেটরগুলিতে ইনপুট প্রয়োগ করে ইনপুট দেওয়া হয় ? এবং ¢কোডে সংজ্ঞায়িত হয় (হাস্কেল কোনও অপারেটরকে সংজ্ঞায়িত করতে পারে না~ প্রযুক্তিগত কারণে )।

মূলত পুরানো পুনরাবৃত্তির পদ্ধতির কাজ করে।


2

জে, 173

f=:|."1@(>@(|.&.>)@(#:@{:;#:@{.))
m=:2&#.@:,@:|:@:|.@:f
s=:2&#.@#/@:f
a=:{&a.@-.
(1!:2)&2(s@".@:a&126)^:(126 e.i)((m@".@:a&194 162)^:(1 e.194 162 E.i)i=._1}.(a.i.((1!:1)3)))

এক লাইন ইনপুট আশা করে

ইওএফ দিয়ে নতুন লাইনের পরে ইনপুট সমাপ্ত হওয়ার প্রত্যাশা


2

জাভাস্ক্রিপ্ট ES6 (3 টি আর্গুমেন্ট) 141 138 136 121 119 বাইট

b=x=>(65536|x).toString`2`
f=(x,o,y)=>+eval(`'0b'+(b(y)+b(x)).replace(/^1|${o=='~'?1:'(.)'}(?=.{16}(.)())|./g,'$2$1')`)

টেস্ট:

;[f(234,'¢',4321),f(2345,'~',7245)]=="16841865,37"

জাভাস্ক্রিপ্ট ES6 (1 টি যুক্তি) 135 133 বাইট

b=x=>(65536|x).toString`2`
f=s=>([x,o,y]=s.split` `)|eval(`'0b'+(b(y)+b(x)).replace(/^1|${o=='~'?1:'(.)'}(?=.{16}(.)())|./g,'$2$1')`)

টেস্ট:

;[f('234 ¢ 4321'),f('2345 ~ 7245')]=="16841865,37"

পিএস: নতুন লাইনটি 1 বাইট হিসাবে গণ্য করা হয় কারণ এটি প্রতিস্থাপন করা যেতে পারে ;


1
0x10000 == 65536 (2 টি অক্ষর সংরক্ষণ করুন)
edc65

@ edc65, আমি উত্তর আপডেট করেছি।
কিওয়ারটি

2
65536 | এক্স এড়াতে x
ed

কেবলমাত্র দ্বিতীয় সংস্করণ অনুমোদিত - ইনপুটটি অবশ্যই একটি স্পেস সীমিত স্ট্রিং আকারে থাকতে হবে।
isaacg

@ আইস্যাক, ঠিক আছে তবে আমি deleteতিহাসিক কারণে প্রথমটি মুছতে চাই না।
কিওয়ারটি

2

পাইথন 3, 157 বাইট

a,x,y=input().split()
i=int
b=bin
print(i(''.join(([c for c,d in zip(b(i(a)),b(i(y)))if d=='1'],[c+d for c,d in zip(b(i(a))[2:],b(i(y))[2:])])['¢'==x]),2))

আমার পেস্টবিনে সম্পূর্ণ এবং ব্যাখ্যামূলক সংস্করণ পাওয়া যাবে ।


'=' 'অপারেটরের আশেপাশের ফাঁকা স্থান' মুছে ফেলার আগে এবং 'বেস' কে অবস্থানগত আর্গুমেন্ট হিসাবে পাস করার মাধ্যমে আপনি কয়েকটি অক্ষর একই করতে পারেন।
ট্রাং ওউল

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

এছাড়াও, আপনি প্রতি ইনডেন্টে 4 টি স্পেস ব্যবহার করেন? একটি (বা ট্যাব) যথেষ্ট।
ট্রাং ওউল

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

1
আপনি কেবল ব্যবহারের জন্য উপস্থিত হন e একবার করার , আপনি কি কেবল এটি ইনলাইন করতে পারবেন না?
কেভিন ব্রাউন

0

গণিত, 155 বাইট

f=IntegerDigits[#,2,16]&;
g=#~FromDigits~2&;
¢=g[f@#~Riffle~f@#2]&;
s=g@Cases[Thread@{f@#,f@#2},{x_,1}->x]&;
ToExpression@StringReplace[#,{" "->"~","~"->"s"}]&

স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করে একটি বেনামি ফাংশনে মূল্যায়ন করে। স্পষ্টতার জন্য লাইন ব্রেকগুলি যুক্ত হয়েছে।

fএবং gবেস 2 থেকে / রূপান্তর Riffleকরে ঠিক কী করে হ'ল ইন্টারলিভ যা হয়। আমি ব্যবহার করতে চেয়েছিলেন Selectজন্য নির্বাচন কিন্তু Casesভাল দুর্ভাগ্যবশত হয়। শেষ লাইনটি কিছুটা কৌতুকপূর্ণ; শূন্যস্থানগুলি পরিবর্তিত হয় ~যা ম্যাথমেটিকার ইনফিক্স অপারেটর, তারপরে স্ট্রিংটি বিভক্ত হয়।

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