আসুন কিছু গণিতটি করা যাক!


22

থেকে Wikipedia নিবন্ধটি :

অবস্থান গাণিতিক (ল্যাটিন পাটিগণিত-স্থানীয়) হ'ল অ্যাডিটিভ (নন-পজিশনাল) বাইনারি নিউমারাল সিস্টেম, যা জন নেপিয়ার তার গ্রন্থ র‌্যাবডোলজিতে (১ a১)) গননা কৌশল হিসাবে সন্ধান করেছিলেন, উভয়ই প্রতীকী এবং দাবা-জাতীয় গ্রিডে।

কি?

অবস্থানের বর্ণগুলি বর্ণমালার অক্ষর ব্যবহার করে সংখ্যা লেখার একটি উপায়।

বাইনারি স্বরলিপি এখনও মানসম্মত হয়নি, সুতরাং নেপিয়ার বাইনারি সংখ্যার উপস্থাপনের জন্য অবস্থানের সংখ্যাকে যা বলেছিলেন তা ব্যবহার করেছিলেন। নেপিয়ারের সিস্টেম সংখ্যাগুলি উপস্থাপনের জন্য সাইন-মান স্বরলিপি ব্যবহার করে; এটি দু'টির একের পর এক শক্তির প্রতিনিধিত্ব করতে ইংরেজী বর্ণমালা থেকে ক্রমাগত অক্ষর ব্যবহার করে: a = 2 ^ 0 = 1, খ = 2 ^ 1 = 2, সি = 2 ^ 2 = 4, ডি = 2 ^ 3 = 8, ই = 2 ^ 4 = 16 এবং আরও।

একটি উদাহরণ

ab = 1 + 2 = 3 বেস 10 তে

aabb = 1 + 1 + 2 + 2 = 6 বেস 10 তে

দ্রষ্টব্য যে উচ্চতর দ্বারা একটি চিঠি এর 2 টি উদাহরণ প্রতিস্থাপন করে aabbসংক্ষিপ্ত করা যেতে পারে bc

সংযোজন

আপনি কেবল দুটি সংখ্যা একত্রিত করে সহজ করুন ify

acd+ bde= = acdbde= abcdde= acebe= abcf= 39বেস 10 এ

বিয়োগ

বিয়োগের উভয় অংশে সমানভাবে উপস্থিত সমস্ত অঙ্ক সরিয়ে ফেলুন। সম্প্রসারিত (রূপান্তর bকরার aa) প্রয়োজন হতে পারে

abde- ad= be= 18 বেস 10

গুণ

এটি কিছুটা শক্ত।

বলুন আমরা acd(13) দ্বারা def(56) গুণতে চাই। প্রথমে আপনি acdউল্লম্বভাবে সাজান :

a
c
d

তারপরে আপনি defপ্রথমটির পরে যুক্ত করুন a:

a def
c
d

এখন, গ 2 অবস্থানের পরে একটি চেয়ে বর্ণমালায়, তাই আমরা করতে বর্ণমালা 2 অবস্থানের যোগ defকরতে fgh। এটি দ্বিতীয় সারিতে যুক্ত করা হয়।

a def
c fgh
d

শেষ অবধি, d সি এর চেয়ে বর্ণমালায় 1 অবস্থান পরে, তাই আমরা বর্ণমালায় 1 অবস্থান fghতৈরি করতে যোগ করি ghi। এটি তৃতীয় সারিতে যুক্ত করা হয়।

a def
c fgh
d ghi

তারপরে আপনি ডানটির যোগফল গ্রহণ করবেন: def+ fgh+ ghi= deffgghhi= deggghhi= deghhhi= deghii= deghj(728)

গুণনের আরও একটি উদাহরণ

ইনপুট:

bc * de

প্রথম:

b
c

তারপর

b ef
c 

তারপর

b ef
c fg

নোট করুন যে আমরা efপ্রথম লাইনে লিখেছি । এটি কারণ থেকে bcশুরু হয় b, এবং bবর্ণমালার দ্বিতীয় অক্ষর, সুতরাং আমাদের de1 টি অক্ষর দ্বারা স্থানান্তর করা দরকার , তাই এটি হয়ে যায় ef

তারপর

ef+fg

আউটপুট:

eh

বিভাগ

এটি এই চ্যালেঞ্জের অংশ নয়, কারণ এটি খুব জটিল হয়ে উঠতে পারে।

আপনার আসল চ্যালেঞ্জ

আপনার প্রোগ্রাম বা ফাংশনটি অবশ্যই এমন স্ট্রিং হিসাবে ইনপুট নেবে:

a + b

এবং আপনার অবশ্যই আউটপুট:

ab

অবশ্যই, আপনার প্রোগ্রাম বা ফাংশন অপারেটরদের সাথে (আপনার ভাষার স্ট্রিং বা ইনপুট সীমা পর্যন্ত) অবাধ দৈর্ঘ্য সংখ্যা সমর্থন করতে হবে +, -অথবা *। আরও কয়েকটি উদাহরণ:

ইনপুট:

ab + bd

আউটপুট:

acd

ইনপুট:

d - ab

আউটপুট:

ac

ইনপুট:

ab * cd

আউটপুট:

cf

নোট:

  • আউটপুটগুলিতে বর্ণগুলির ক্রম কিছু যায় আসে না তবে আপনি সর্বদা অনুমান করতে পারেন যে ইনপুটটিতে সংখ্যায় বর্ণগুলির ক্রমটি আরোহণ হবে (z এর আগে)।
  • আপনি একটি পিছনে নতুন লাইনের সাথে ইনপুট নিতে পারেন এবং একটি ট্রেলিং করা নতুন লাইনের সাথে আউটপুট।
  • আপনি পারে না একটি তালিকা হিসাবে ইনপুট নিতে ab, *এবং bdজন্য ab * bd
  • ইংরেজি বর্ণমালা ব্যবহৃত হয় ( abcdefghijklmnopqrstuvwxyz)
  • আপনার আউটপুট সরল করতে হবে ( aaঅনুমোদিত নয়, bপ্রয়োজন)
  • ইনপুট সরল করা হবে ( b+ c, aa+ bbবা aa+ aaaa)
  • আগে আপনি একটি স্থান এবং অপারেটর (প্রয়োজন হতে পারে +, -অথবা *), অথবা আপনি সেখানে কেউ হতে প্রয়োজন হতে পারে।
  • প্রতি ইনপুটটিতে কেবল একজন অপারেটর থাকবে।
  • আপনি ধরে নিতে পারেন যে আউটপুট এবং ইনপুট কখনই 2 ^ 27-1 ( abcdefghijklmnopqrstuvwxyz) এর বেশি হবে না
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

2
d is 2 positions later in the alphabet than cএই কৌতুক? এটা করা উচিত নয় 1? That is added to the second row.একই বাক্যে, এটি হওয়া উচিত নয় third?
ফিলিপ নারদী বাটিস্তা

1
@ ফিলিপনার্দিবাটিস্তা এখানে ইংরেজি বর্ণমালা ব্যবহার করা হয়েছে, এটি সম্পাদিত।
programmer5000

@ প্রোগ্রামার bc*de==efghefgh240144
৫০০০

1
bc*deহওয়া উচিতeh
ফিলিপ নারদী বাটিস্তা

@ দাদা এখানে প্রতি ইনপুট কেবলমাত্র একজন অপারেটর থাকবে।
programmer5000

উত্তর:


3

জেলি , 26 25 বাইট

i@€Øað’2*S;ḟ.Ḣ
ḲÇ€VBṚTịØa

জেলি এর অপারেটার (ব্যবহার ×বদলে *এবং _বদলে -হিসাবে) ইনপুট স্ট্রিং ওপি দ্বারা অনুমোদিত

(অপারেটরগুলির চারপাশে ফাঁকা স্থান প্রয়োজন)

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষার স্যুটটি দেখুন

কিভাবে?

i@€Øað’2*S;ḟ.Ḣ - Link 1, transform from input sub-string to value or operator: sub-string
i@€            - 1st index of, for €ach (or 0 if not found) [reversed @rguments] in:
   Øa          -      lowercase alphabet (i.e. a->1, b->2, ..., non-alpha->0)
     ð         - dyadic chain separation i.e. f(result above, substring):
      ’        - decrement (i.e a->0, b->1, ..., non-alpha->-1)
       2*      - 2 raised to that power
         S     - sum
          ;    - concatenate with the substring
           ḟ   - filter out:
            .  -     0.5 (for an operator substring the evaluated 0.5 is removed)
             Ḣ - head (i.e. the evaluation for a location, and the operator otherwise)

ḲÇ€VBṚTịØa - Main link: string                        e.g. 'ab × cd'
Ḳ          - split on spaces                               [['a','b'],['×'],['c','d']]
 Ç€        - last link (1) as a monadic function for €ach  [3,'×',12]
   V       - evaluate as Jelly code                        36
    B      - convert to binary                             [1,0,0,1,0,0]
     Ṛ     - reverse                                       [0,0,1,0,0,1]
      T    - truthy indexes                                [3,6]
       ị   - index into:
        Øa -     lowercase alphabet                        ['c','f'] (i.e. "cf", which is implicitly printed when run as a full program)

7

গণিত, 168 বাইট by

FixedPoint[StringReplace[x_~~x_:>FromCharacterCode[c@x+1]],Table["a",ToExpression@StringReplace[#,x:LetterCharacter..:>ToString@Tr[2^((c=ToCharacterCode)@x-97)]]]<>""]&

আমার প্রাথমিক সমাধান (পোস্টটি সম্পাদনের আগে স্পষ্ট করে দিতে হবে যে আউটপুট সরল করতে হবে) ছিল 64বাইটস সংক্ষিপ্ত:

Table["a",ToExpression@StringReplace[#,x:LetterCharacter..:>ToString@Tr[2^(ToCharacterCode@x-97)]]]<>""

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

ব্যাখ্যা:

অক্ষরের প্রতিটি অনুক্রমকে অক্ষর কোড পাটিগণিত অনুসারে এর সাথে সম্পর্কিত পূর্ণসংখ্যার সাথে প্রতিস্থাপন করে, ফলস্বরূপ স্ট্রিংটিকে একটি অভিব্যক্তিতে রূপান্তরিত করে (যা স্বয়ংক্রিয়ভাবে একটি পূর্ণসংখ্যার সাথে সহজতর হবে), তারপরে সেই সংখ্যার aসমান দৈর্ঘ্যের অক্ষরের একটি স্ট্রিং তৈরি করে এবং অবশেষে সংলগ্ন অভিন্নটিকে প্রতিস্থাপন করে একটি নির্দিষ্ট পয়েন্ট পৌঁছানো পর্যন্ত পরবর্তী অক্ষর কোড সহ অক্ষর।


2
ওহ, কোন 1-চর অন্তর্নির্মিত আছে? Suprising!
programmer5000

7

জাভাস্ক্রিপ্ট (ES6), 136 134 133 বাইট

লুক 1 টি বাইট ধন্যবাদ সংরক্ষণ করা

s=>[...a='abcdefghijklmnopqrstuvwxyz'].filter((c,i)=>eval(s.replace(/\w+/g,s=>[...s].reduce((p,c)=>p|1<<a.search(c),0)))&1<<i).join``

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


সুন্দরভাবে সম্পন্ন! আপনি আমাকে এটি মারলেন ...
প্রোগ্রামার

এটি দশমিক এবং ফিরে রূপান্তর করে? এটি তাই প্রদর্শিত হয়।
programmer5000

1
@ প্রোগ্রামার ৫০০ হ্যাঁ সত্যিই। আমার সন্দেহ যে অনেক উত্তর আসবে। (অবশ্যই ম্যাথামেটিকা ​​ব্যতীত, যার সম্ভবত এটির জন্য একটি অন্তর্নির্মিত নকশা রয়েছে ^^)
আরনাউল্ড

দেখে মনে হচ্ছে আপনার মন্তব্যে কোনও লিঙ্ক অনুপস্থিত। এটি একটি অন্তর্নির্মিত fot কি আছে?
programmer5000

@ প্রোগ্রামার
৫০০০

5

পার্ল 5 , 95 বাইট

কোড + -pপতাকা 94 বাইট ।

s/\w/a x 2**(-97+ord$&)/ge;s/(.*)-\1|\+//;/\*/&&($_=$`x length$');1while s/(.)\1/chr 1+ord$1/e

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

এখানে তিনটি পদক্ষেপ:
- s/\w/a x 2**(-97+ord$&)/ge;ইনপুটটিকে aকেবল স্ট্রিংয়ে রূপান্তর করে ।
- s/(.*)-\1|+//;/*/&&($_=$`x length$')অপারেটর (যে স্ট্রিং উপর খুব সহজ চালানো হবে a): +সংযুক্তকরণের হয় -মানে অনেক হিসাবে প্রথম অংশ থেকে সরানোর aসেখানে দ্বিতীয় অংশে আছে, এবং *অনেক বার হিসাবে প্রথম অংশ অনুরূপ উপায় হিসেবে আছে aদ্বিতীয় অংশ।
- 1while s/(.)\1/chr 1+ord$1/eবর্ণমালার পরবর্তী অক্ষরে পরপর একই অক্ষরগুলি ভাঁজ করে।


একমাত্র উত্তর যা দশমিক রূপান্তরিত হয় না! সুন্দর কাজ!
programmer5000

1
@ programmer5000 2 টি উত্তরের মধ্যে, আমি এটিকে চিত্তাকর্ষক বলব না!
দাদা

5

05 এ বি 1 ই , 29 বাইট

ð¡À¬U¦v0yvAyko+}}X.VbRvyiANèJ

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

ব্যাখ্যা

ð¡                             # split input on string
  À                            # rotate left
   ¬U¦                         # get the operator, store it in X and remove it from list
      v                        # for each side of the equation
       0                       # push 0 as an accumulator
        yv                     # for each letter in each side of the equation
          Ayk                  # get its index in the alphabet
             o                 # raise 2 to this power
              +                # add to the accumulator
               }}              # end loops
                 X.V           # apply the operator to the 2 numbers now on the stack
                    bR         # convert to binary and reverse
                      v        # for each binary digit
                       yi      # if it is true
                         ANè   # get the letter at that index in the alphabet
                            J  # join stack to a single string

5

সি & x86 এএসএম, 340 বাইট

-O0 দিয়ে সংকলন করুন

#define G getchar()
g(){int c,a=0;for(;islower(c=G);)a+=1<<(c-97);return a;}
main(){short o[]={[43]=0x4403,[45]=0x442b,[42]=0x6cf7};
mprotect((long)&&l&~4095,4096,7);
for(;;){int c,b=0,a=g();*(short*)&&l=o[G];G;g();asm("xchg %%eax,%0":"+m"(a));
l:asm("addl %1,%%eax":"=a"(c):"m"(a));
for(;a=c>>b;b++)if(a&=1)putchar(97+b);putchar(10);}}

ব্যাখ্যা

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

সম্পাদন করা

যেহেতু এটি মন্তব্যে জিজ্ঞাসা করা হয়েছিল, তাই আরও একটি traditionalতিহ্যবাহী মূল্যায়ন এ রকম দেখাবে:

#define G getchar()
#define return r
#define int i
g(){i c,a=0;for(;islower(c=G);)a+=1<<(c-97);r a;}
a(i x,i y){r x+y;}s(i x,i y){r x-y;}m(i x,i y){r x*y;}
main(){i(*o[])(i,i)={[43]=a,[45]=s,[42]=m};
for(;;){i c,b,a=g();b=G;G;g();c=o[b](a,g());
for(b=0;a=c>>b;b++)if(a&=1)putchar(97+b);putchar(10);}}

এটি 301 টি অক্ষরে আসলে কিছুটা সংক্ষিপ্ত, কয়েকটি কারণে: ১. কারণ অনেকগুলি কার্যকারিতা থাকা দরকার, তাই প্রত্যেকটির ওভারহেড কিছু প্রিপ্রসেসর নিয়ম দিয়ে কাটা যেতে পারে। ২. আধুনিক লিনাক্স স্ট্যাকের প্রয়োগ থেকে রক্ষা করে, সুতরাং এমপ্রোটেক্ট () এই বলি দেওয়া 34 বাইট অক্ষম করার জন্য কল করে। ৩. এক্সএইচজিজি কলটি খুব সাব-অনুকূল, যার দাম আরও 30 বাইট। যদি এই জিনিসগুলির জন্য না হয় তবে x86 কম্বোটি প্রায় 10-20 বাইট দ্বারা জিততে পারে।

জি-তে ইজলোয়ার () কল উন্নত করে উভয় থেকে 2 বাইট কাটা হয়েছে।


কোড-আকারের ক্ষেত্রে এটি আরও ধ্রুপদী পদ্ধতির সাথে কীভাবে তুলনা করা যায় তা আমি সত্যিই বলতে পারি না তবে আমি আপনার সমাধানটি সত্যিই পছন্দ করি। +1
আর্নল্ড

5

জিএনইউ সেড + কোর্টিলস, 329 বাইট

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

/\+/{s/\+//
b S}
/-/{:E
/a+-a+/{s/(a*)(a*)-\2/\1/
b S}
s/.*/echo &|tr b-z- A-Y-/
e
s/([A-Z])/\L\1\1/g
b E}
/\*/{h
:M
/^\*/{x
s/[^\n]*//
s/\n//g
b S}
s/(.).*\*(.*)/echo \2|tr a-z \1-za-z/
e
H
g
s/.(.*)/\1/
h
s/\n.*//
b M}
:S
s/^.*$/echo &|grep -o .|sort|tr -d '\n'/
e
:L
s/(.)\1/\u\1/g
/^[a-z]*$/ q
s/.*/echo &|tr A-Z b-za/;e
b L

আমি ধরে নিয়েছি যে অপারেটরগুলির চারপাশে কোনও স্থান থাকবে না। আমার টার্মিনাল থেকে:

$ sed -rf golf.sed <<< a+b
ab
$ sed -rf golf.sed <<< ab+bd
acd
$ sed -rf golf.sed <<< abc+b
ad
$ sed -rf golf.sed <<< d-ab
ca
$ sed -rf golf.sed <<< ab*cd
cf
$ sed -rf golf.sed <<< bc*de
eh
$ sed -rf golf.sed <<< acd*def
deghj

এবং, আমি তুলনায় যারা স্যানার জন্য: মন্তব্য সংস্করণ!

#!/bin/sed -rf

/\+/ {
    s/\+//
    b simplify
}

/-/ {
    # expand pattern space; everything will now be 'a's
    :E
    /a+-a+/{
        # Remove doubled 'a's on either side of the dash. For example,
        # for input d-ab, space is now 'aaaa-aaa'; substitute this to 'a'
        s/(a*)(a*)-\2/\1/
        b simplify
    }
    # shift letters that aren't 'a' down and double them
    s/.*/echo &|tr b-z- A-Y-/;e
    s/([A-Z])/\L\1\1/g
    b E
}

/\*/ {
    # Hold space: line 1 is pattern, other lines are output
    h
    :M

    # if space starts with *, we've eaten entire arg0; sum and simplify
    /^\*/ {
        x
        s/[^\n]*//      # remove first line, which is our pattern
        s/\n//g         # remove newlines to add results together
        b simplify
    }

    # convert pattern into shifting command
    s/(.).*\*(.*)/echo \2|tr a-z \1-za-z/

    # execute it, append result to hold space
    e
    H

    # restore pattern, with leading char and all output lines removed
    g
    s/.(.*)/\1/
    h
    s/\n.*//

    b M
}

:simplify
# reorder all letters so all 'a's are before all 'b's are before all 'c's
# are before ... etc    
# See /programming/2373874
s/^.*$/echo &|grep -o .|sort|tr -d '\n'/
e

:L
# Replace repeated characters with themselves upper-cased, then translate
# upper-cased characters to what they should be.
s/(.)\1/\u\1/g
/^[a-z]*$/ q
s/.*/echo &|tr A-Z b-za/;e
b L

সিড কোডের জন্য +1 এবং পিপিসিজিতে স্বাগতম! খাঁটি জিএনইউ সেডে (বা অন্য কোনও শুদ্ধ ভাষায়) সমাধান না করার সময় এখানে কনভেনশনটি সিস্টেম কমান্ডগুলি যেমন "জিএনইউ সেড + কোরিউটিলস" ব্যবহার করে যেমন শিরোনামে শেল কমান্ড কল করার কথা উল্লেখ করলেও শিরোনামে যুক্ত হয় description । এটি আলাদা করার জন্য করা হয়, বিশেষ করে লিডার-বোর্ডগুলির সাথে চ্যালেঞ্জগুলিতে, খাঁটি জিএনইউ সেড উত্তর থেকে।
শৈশুমারা

এছাড়াও, প্রত্যেকবার প্রয়োজনীয় পতাকা 'চ' বাদে অন্য কোনও পতাকা অবশ্যই 1 বাইট হিসাবে গণনা করতে হবে। সুতরাং আপনার স্কোর 329. আপনি বিবরণে এটি উল্লেখ করতে চাইতে পারেন। এবং সমাপ্তির জন্য, আপনি টিআইওর মতো কোনও অনলাইন সেড ইন্টারপ্রেটারে একটি লিঙ্ক যুক্ত করার কথা ভাবতে পারেন ।
শৈশুমারা

সমস্ত আলাপ এবং কোনও পদক্ষেপ না হওয়ার জন্য, এখানে একটি 43 বাইট সংক্ষিপ্ত! আপনার কোডের সংস্করণ (286 বাইট সহ -r), যা আমি কমান্ডগুলি গল্ফ করে খুঁজে পেয়েছি। আমি নিশ্চিত যে এটি আরও খাটো হতে পারে।
শৈশুমারা

আহ, ঠিক আছে, জানা ভাল! এছাড়াও, দুর্দান্ত গল্ফিং! যদিও সেডের কোন সংস্করণ আপনি ব্যবহার করছেন? আপনারা sed: file golf.sed line 24: ":" lacks a label
টিআইওতে

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

4

পিএইচপি, 168

Alওল এর ব্যবহারের সাথে আউটপুট আরোহণ

[$a,$o,$b]=explode(" ",$argn);function d($s){for(;$i<strlen($s);)$n+=2**(ord($s[$i++])-97);return$n;}for(eval("\$k=d($a)$o d($b);");$i<26;)echo$k&2**$i++?chr(96+$i):"";

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

আউটপুট আরোহী

[$a,$o,$b]=explode(" ",$argn);function d($s){for(;$i<strlen($s);)$n+=2**(ord($s[$i++])-97);return$n;}for(;$i<26;)echo(bc.[mul,add,0,sub][ord($o)-42])(d($a),d($b))&2**$i++?chr(96+$i):"";

অনলাইন সংস্করণ

সম্প্রসারিত

[$a,$o,$b]=explode(" ",$argn); # part the input into variables
function d($s){ # make decimal value
    for(;$i<strlen($s);)$n+=2**(ord($s[$i++])-97);
    return$n;
}
for(;$i<26;)
echo(bc.[mul,add,0,sub][ord($o)-42])(d($a),d($b))&2**$i++?chr(96+$i):""; # Bitwise Compare and Output

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

আউটপুট ডিসেন্ডিং

[$a,$o,$b]=explode(" ",$argn);function d($s){for(;$i<strlen($s);)$n+=2**(ord($s[$i++])-97);return$n;}for($r=(bc.[mul,add,0,sub][ord($o)-42])(d($a),d($b));$r;$r-=2**$l)$t.=chr(97+$l=log($r,2)^0);echo$t;

অনলাইন সংস্করণ

সম্প্রসারিত

[$a,$o,$b]=explode(" ",$argn); # part the input into variables
function d($s){ # make decimal value
    for(;$i<strlen($s);)$n+=2**(ord($s[$i++])-97);
    return$n;
}
for(
$r=(bc.[mul,add,0,sub][ord($o)-42])(d($a),d($b)) # result of the operation
;$r;
$r-=2**$l) # subtract the letter value 
$t.=chr(97+$l=log($r,2)^0); # find greatest letter
echo$t; # Output

4

পাইথন 3 , 176 167 বাইট

i=lambda a:str(sum(1<<ord(i)-97for i in a))
def f(a):
 a,b,c=a.split();m=eval(i(a)+b+i(c));r=''
 while m:
  t=0
  while m>=2**t*2:t+=1
  r+=chr(97+t);m-=2**t
 return r

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


1
যদি আমি ভুল না করি তবে আপনি দুটি বাইট প্রতিস্থাপন m>=2**(t+1)করে m>=2**t*2এবং পাঁচটি বাইটের a=a.split();m=eval(i(a[0])+a[1]+i(a[2]))মতো প্রতিস্থাপন করে শেভ করতে পারেন b,c,d=a.split();m=eval(i(b)+c+i(d))
টটলম্যান

1
ওহ, এবং আরও দুটি বাইট প্রতিস্থাপন 2**(ord(i)-97)করে 1<<ord(i)-97
টটলম্যান

1
অন্যান্য সমাধানের সাথে এই সমাধানটি কতটা পাঠযোগ্য, তা আমি অবাক হয়েছি।
ওলে টেঞ্জ

ধন্যবাদ :). তবে আমি মনে করি এটি অজগরের কারণে ভাষাটি ব্যবহৃত হচ্ছে। ইন্ডেন্টেশনটি বাইটের গণনা বাড়িয়ে তোলে, তবে পঠনযোগ্য। ;)
অফিসিয়ালাইম

2

পিএইচপি, 130

for($d=a;$e=$argn[$i++];)$e!=' '?$d!=b?$$d+=1<<ord($e)-97:$b=$e:++$d;eval("for(;\$j++<27;)echo($a$b$c>>\$j-1)&1?chr(96+\$j):'';");

প্রসারিত সংস্করণ:

for($d=a;$e=$argn[$i++];)       // for each char in the input
  $e!=' '?                      //   if space
    $d!=b?                      //     if not the operation
      $$d+=1<<ord($e)-97:       //       add 2^(char - 'a')
      $b=$e:                    //     else save operation
    ++$d;                       //   else increase "pointer"
eval("for(;\$j++<27;)           // for each bit in the output
        echo($a$b$c>>\$j-1)&1?  //   calulate the result and check the bit
          chr(96+\$j):          //     output corrosponding char
          '';                   //     output nothing
     ");

দিয়ে চালানো php -R <code>


1

এডাব্লুকে, 201 বাইট

BEGIN{RS="(.)"}n=index(V="abcdefghijklmnopqrstuvwxyz",RT){s+=2^--n}index("+-*",RT){a=s RT
s=0}END{RS="\n"
"(awk '$0="a s"'<<<1)"|getline v
for(j=26;j--;)if((s=v-2^j)>=0){v=s;c=substr(V,j+1,1)c}print c}

"(awk '$0="a s"'<<<1)"|getline vসবচেয়ে ভালো উপায় আমি সাথে আসতে পারেন একটি করতে হয় evaluateমধ্যে AWK। আমি AWKকমান্ড চালাচ্ছি বলে এটিকে ঠিক বলতে গেলে আমি "প্রতারক" হতে পারি, তবে কমপক্ষে কমান্ডটিও হয় AWK:)

আমি নিশ্চিত বাইট-কাউন্ট কমাতে আমি কোনও উপায় অনুপস্থিত, তবে আমি নিশ্চিত তা দেখতে পাচ্ছি না।

ব্যবহার মোটামুটি মানসম্পন্ন, উদাহরণস্বরূপ কোডটি প্রবেশ করুন FILEএবং করুন:

awk -f FILE <<< "bc + ab"

মনে রাখবেন যে ফাঁকা স্থানগুলির প্রয়োজন নেই এবং কোনও অপ-অপ / অন / অ্যাজ] অক্ষর চুপচাপ উপেক্ষা করা হবে। লুপ পরিবর্তন করে "abcdefghijklmnopqrstuvwxyz" এর চেয়ে বেশি সংখ্যার সাথে কাজ করার জন্য বাড়ানো যেতে পারে। বিভাগ করতে, কেবল /অপারেশন স্ট্রিংয়ে অক্ষর যুক্ত করুন :)। এছাড়াও, একটি ফাঁকা লাইন যদি প্রিন্ট হবে result <= 0

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