অবিচ্ছিন্ন পূর্ণসংখ্যার স্বরলিপি


14

সম্পাদনা: meta-golfশীঘ্রই আমি এই প্রশ্নের একটি নতুন সংস্করণ পোস্ট করব । টুনটনে থাকুন!

সম্পাদনা # 2: আমি আর চ্যালেঞ্জটি আপডেট করব না, তবে এটি উন্মুক্ত রেখে দেব। meta-golfসংস্করণ এখানে পাওয়া যায়: /codegolf/106509/obfuscated-number-golf

পটভূমি:

সর্বাধিক সংখ্যা কেবল 6 টি পৃথক চিহ্ন সহ লেখা যেতে পারে:

  • e (ইউলারের কনস্ট্যান্ট)
  • - (বিয়োগ, নেতিবাচক নয়)
  • ^ (Exponentiation)
  • (
  • )
  • ln (প্রাকৃতিক লোগারিদম)

উদাহরণস্বরূপ, আপনি iএই সমীকরণটি ব্যবহার করে কাল্পনিক সংখ্যাটি রূপান্তর করতে পারেন :

(e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e)))))

গোল:

kযেকোন যুক্তিসঙ্গত মাধ্যমে কোনও পূর্ণসংখ্যা দেওয়া , কেবলমাত্র সেই symb টি প্রতীক ব্যবহার করে সেই সংখ্যার সংক্ষিপ্ততম প্রতিনিধিত্ব করুন।

উদাহরণ:

0 => "e-e"
1 => "ln(e)"
2 => "ln(ee)"
// Since - cannot be used for negation, this is not a valid solution: 
// ln(e)-(-ln(e))
-1 => "e-e-ln(e)"

মন্তব্য:

  • শেষ বন্ধনীর অক্ষরের মোট পরিমাণের জন্য গণনা।
  • ln( শুধুমাত্র 1 টি চরিত্র হিসাবে গণনা করা হয়।
  • বাকি সমস্ত কিছুই 1 টি চরিত্র হিসাবে গণনা করা হয়।
  • n^0=1
  • ক্রমের আদেশ প্রযোজ্য
  • প্রথম বন্ধনী গুন গ্রহণযোগ্য, যেমন (2)(8)=16, 2(5)=10এবং eln(e)=e
  • ln e বৈধ নয়, আপনাকে অবশ্যই করতে হবে ln(e)

3
আমি মনে করি যে সূত্র ( ln(ee...e)) ইতিবাচক চিত্রিত করার সেরা উপায়। সম্পাদনা: না, এটা না। ln(e^(ln(eeeee)ln(eeee)))20
মাইল্ডলি মিল্কিওয়েস্ট 10'17

6
@ জুলিয়ানল্যাচনিট ধারণাটি পছন্দ করেন, অনুরোধ অনুসারে ক্রমের প্রথম 10-20 শর্তাবলী দেখতে চান। স্পষ্টতার জন্য -10 থেকে 10 এর জন্য একটি উদাহরণ স্থাপন করতে পারেন। WheatWizard ইতিমধ্যে কয়েকটি দাগ ছিটিয়েছে, এই গর্তগুলির সাথে "সংক্ষিপ্ততম সম্ভব" এর উদ্দেশ্যগত মানদণ্ডটি কংক্রিটের উদাহরণ ছাড়াই নির্ধারণ করা শক্ত।
ম্যাজিক অক্টোপাস উরান

উচ্চতর কিছু সম্পর্কে নিশ্চিত না, বিশেষত 20
জুলিয়ান ল্যাচনিয়েট

2
ln(eeee)^ln(ee)ln(eeeeeeeeeeeeeeee)16 এর চেয়ে সংক্ষিপ্ত
পোস্ট রক গার্ফ হান্টার

8
স্রেফ একটি পরামর্শ। আমি মনে করি কোড-গল্ফ চ্যালেঞ্জের চেয়ে মেটা-গল্ফ চ্যালেঞ্জ হিসাবে এটি আরও মজাদার হতে পারে । এটি প্রমাণ করা সত্যিই কঠিন যে কিছু কোড সর্বদা অনুকূল ফলাফল তৈরি করে যাতে তারা তাদের আউটপুটটি কতটা ভাল গল্ফ করে সে সম্পর্কে উত্তরগুলি স্কোর করা ভাল।
পোস্ট রক গারফ হান্টার

উত্তর:


2

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

from itertools import*
from ast import*
from math import*
v,r=lambda x:'UnaryOp'not in dump(parse(x)),lambda s,a,b:s.replace(a,b)
def l(x,y):
    for s in product('L()e^-',repeat=x):
        f=r(r(r(''.join(s),'L','log('),')(',')*('),'^','**')
        g=r(f,'ee','e*e')
        while g!=f:f,g=g,r(g,'ee','e*e')
        try:
            if eval(g)==y and v(g):return g
        except:0
def b(v):
    i=1
    while 1:
        r=l(i,v)
        if r:return r
        i+=1

ব্যবহারের উদাহরণ:

>>> b(1)
'log(e)'
>>> b(0)
'e-e'
>>> b(-3)
'e-log(e*e*e)-e'
>>> b(8)
'log(e*e)**log(e*e*e)'

মনে রাখবেন যে আউটপুট ফর্ম্যাটটি এটি প্রতিবিম্বিত নাও করতে পারে, কোড সঠিকভাবে প্রশ্নের স্পেসিফিকেশন অনুযায়ী সমস্ত দৈর্ঘ্য গণনা করে।

এটি সম্ভাব্য সমস্ত দৈর্ঘ্যের স্ট্রিংয়ের মধ্য দিয়ে বোবা ব্রুটফোর্স। তারপরে আমি কিছু প্রতিস্থাপন ব্যবহার করি যাতে পাইথন এটি মূল্যায়ন করতে পারে। এটি যদি আমরা যা চাই তার সমান হয়, তবে আমি এএসটি পরীক্ষা করে অযৌক্তিক নেতিবাচক চিহ্নগুলিও বাদ দিতে চেক করি।

আমি পাইথনে গল্ফ করাতে খুব একটা ভাল নই, তাই কেউ যদি সহায়তা করতে চায় তবে এখানে অর্ধ-অবহেলিত কোডটি দেওয়া আছে!

from itertools import*
from ast import*
from math import*

def valid(ev):
    return 'UnaryOp' not in dump(parse(ev))

def to_eval(st):
    f = ''.join(st).replace('L', 'log(').replace(')(', ')*(').replace('^', '**')
    nf = f.replace('ee', 'e*e')
    while nf != f:
        f, nf = nf, nf.replace('ee', 'e*e')
    return nf

def try_length(length, val):
    for st in product('L()e^-', repeat=length):
        ev = to_eval(st) 
        try:
            if eval(ev) == val and valid(ev):
                return st
        except:
            pass

def bruteforce(val):
    for i in range(11):
        res = try_length(i, val)
        if res:
            print(i, res)
            return res

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