বেফুঞ্জের প্রিলিওড অনুবাদ করুন


19

এটি সাপ্তাহিক চ্যালেঞ্জ # 2। থিম: অনুবাদ

একটি প্রোগ্রাম বা ফাংশন যা একটি প্রোগ্রামের জন্য সোর্স কোড লাগে লিখুন প্রস্তাবনা মধ্যে একটি সমতুল্য প্রোগ্রামের জন্য এবং আউটপুট কোড Befunge-93 । প্রোগ্রামটি সমতুল্য হওয়ার জন্য, কোনও প্রদত্ত ইনপুটটির জন্য, প্রিলেড প্রোগ্রামের মতো একই আউটপুট তৈরি করা উচিত, এবং যদি প্রিলিড প্রোগ্রামটি বন্ধ হয় তবেই থামানো উচিত।

ইনপুট ভাষা: উপস্থাপনা

পাইথন দোভাষী:

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

এই চ্যালেঞ্জের জন্য অনুমানের প্রস্তাব দিন:

Digits 0-9      Push onto the stack a number from 0 to 9. Only single-digit
                    numeric literals can be used.
^               Push onto the stack the top value of the stack of the above 
                    voice.
v               Push onto the stack the top value of the stack of the below 
                    voice.
#               Remove the top value from the stack.
+               Pop the top two integers from the stack and push their sum.
-               Pop the top two integers from the stack, subtract the topmost 
                    from the second, and push the result.
(               If the top of the stack is 0, jump to the column after the 
                    matching `)` after the current column executes.
)               If the top of the stack is not 0, jump to the column after 
                    the matching `(` after the current column executes.
?               Read an integer from STDIN.
!               Pop one value from the stack and print it to STDOUT as an
                    integer.
<space>         No-op

মন্তব্য

  • vএবং ^চক্রাকারে কাজ করুন, সুতরাং vনীচের ভয়েসটি উপরের ভয়েসের স্ট্যাক উপাদানটি অনুলিপি করবে এবং ^উপরের ভয়েসে নীচের ভয়েস থেকে অনুলিপি করবে। প্রতিচ্ছবি: উভয় vএবং ^একক ভয়েস প্রোগ্রামে স্ট্যাকের শীর্ষ প্রতিলিপি।
  • (এবং এর মিলটি )বিভিন্ন লাইনে অবস্থিত হতে পারে। তবে , ক) সর্বদা এটি ভয়েসের স্ট্যাকের দিকে নজর রাখবে যেখানে সংশ্লিষ্টটি (স্থাপন করা হয়েছিল, )নিজেই যেখানে স্থাপন করা হয়েছে সেখানে নয়।
  • ^এবং দ্বারা উত্পাদিত মানv নির্দেশাবলী একই কলামে অন্য কোন অপারেশন সম্পন্ন হওয়ার পূর্বে বর্তমান মান উপর কাজ করে।
  • ? এবং ! esolangs.org এ পাওয়া স্পেসিফিকেশন থেকে আলাদাভাবে পরিচালনা করুন, সুতরাং এই পোস্টে প্রদত্ত সামান্য পরিবর্তিত দোভাষী দিয়ে পরীক্ষা করে নিশ্চিত হন।

ইনপুট থাকার গ্যারান্টিযুক্ত:

  • ম্যাচিং বন্ধনীগুলি
  • কলামে একাধিক বন্ধনী নেই
  • প্রতিটি লাইনে অক্ষরের একই সংখ্যা
  • কমপক্ষে একটি লাইন
  • একাধিক আই / ও ( !বা।) সহ কোনও কলাম নেই? ) নির্দেশাবলী
  • প্রতিটি ভয়েসের জন্য নির্দেশাবলীর পরে একটি লাইনফিড অক্ষর
  • উপরে বর্ণিত অক্ষর ব্যতীত অন্য কোনও অক্ষর নেই

আউটপুট ভাষা: বেফুঞ্জ -৩৩

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

আপনি বেফঞ্জ -৩৩ সংকলক / দোভাষীর নিম্নলিখিত বৈশিষ্ট্যগুলি ধরে নিতে পারেন:

  • পূর্ণসংখ্যা সীমাহীন-নির্ভুলতা।
  • এটি যে কোনও আকারের গ্রিডের অনুমতি দেয়।
  • গ্রিড স্থানাঙ্কগুলি (এর জন্য gএবং p) 0-ভিত্তিক।

স্কোরিং

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

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

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

নমুনা ইনপুট

মুদ্রণ করুন n-1নিচে 0:

?(1-^!)

যৌক্তিক এবং:

?  (0)  
 ?(0  ) 
    1  !

যৌক্তিক বা:

 ?   (0) 
? (0)    
   1  1 !

ননজেগটিভ সংখ্যার ইনপুট (যেমন মডুলো 2) এর সমতা পরীক্ষা করুন:

?(1-)   
 ^  v   
 v1-^^-!

স্কয়ারটি ইনপুট:

 ^    
  ^+ !
?(1-) 

N ম ফিবোনাচি নাম্বারটি মুদ্রণ করুন , যেখানে n = 00 এর n = 1সাথে মিল রয়েছে এবং 1:

0 v+v!
1   ^ 
?(1-) 

সংকেত:

  1) v #  - !
 vv (##^v^+) 
?(#   ^   ## 

অ-নেতিবাচক ইনপুটগুলির জন্য বিভাগ:

1 (#  1) v #  - 1+)   
     vv (##^v^+)      
?  v-(0 # ^   #       
 ?                    
   1+              1-!

অবশ্যই, programণাত্মক সংখ্যার জন্য নমুনা প্রোগ্রামের আচরণ সুনির্দিষ্ট না করা সত্ত্বেও, আপনার প্রোগ্রামটি অবশ্যই সমস্ত ক্ষেত্রে একই আচরণ প্রদর্শন করবে।

অবশেষে, আপনার অনুবাদকটি অযৌক্তিকভাবে দীর্ঘ হওয়া উচিত নয়:

  • এটি অবশ্যই স্ট্যাক এক্সচেঞ্জের পোস্টের মধ্যে থাকা উচিত
  • এটি একটি সাধারণ ডেস্কটপ কম্পিউটারে 10 মিনিটের নিচে নমুনা ইনপুটগুলি প্রক্রিয়া করা উচিত।

নোট করুন যে প্রিলিউড বা বেফুঞ্জের জন্য একটি সংখ্যার ইনপুটটি একটি alচ্ছিক বিয়োগ চিহ্ন হিসাবে দেওয়া হবে যার পরে একটি নতুন লাইন পরে এক বা একাধিক দশমিক অঙ্ক হয়। অন্যান্য ইনপুট হ'ল অপরিজ্ঞাত আচরণ।

আপনি যে কোনও ভাষায় আপনার অনুবাদক লিখতে পারেন। সংক্ষিপ্ত অনুবাদিত বেফুঞ্জ কোড জিতেছে।

লিডারবোর্ড

  • Sp3000 : 16430 বাইট

আমি বুঝতে পারি না: "উপরের ভয়েসের স্ট্যাকের উপরের মানটি স্ট্যাকের উপরে চাপুন।" "শীর্ষ মান স্ট্যাকের সম্মুখের পুশ: কি এটা হতে হয়েছে না এর উপরে ভয়েস স্ট্যাক।"
Def

এটি বলেছে যে উপস্থাপিকা একই সাথে কণ্ঠস্বর সম্পাদন করে, তার অর্থ কি এগুলি সত্যই পৃথক থ্রেডে কার্যকর করা হয়েছে বা আমি কেবলমাত্র সমস্ত ভয়েসেসের উপরের প্রথম কমান্ডগুলি (উপরে থেকে নীচে) চালিত করতে পারি তবে দ্বিতীয় কমান্ড এবং আরও অনেক কিছু।
Def

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

বেশ কয়েকটি পরীক্ষার কেস "একাধিক আই / ও (! বা?) নির্দেশনা সহ কোনও কলাম নেই?"
ফুজাক্স

@ প্রপাদহসকলার 1একটি লুপের অভ্যন্তরে রয়েছে, সুতরাং এটি ধাক্কা না দেওয়া হতে পারে। একটি 0 0 এর অসীম পরিমাণ থেকে স্ট্যাকগুলি থেকে শুরু হতে পারে।
ফেয়ারসুম

উত্তর:


10

পাইথন 3, পরে স্কোর করবে

from collections import defaultdict
from functools import lru_cache
import sys

NUMERIC_OUTPUT = True

@lru_cache(maxsize=1024)
def to_befunge_num(n):
    # Convert number to Befunge number, using base 9 encoding (non-optimal,
    # but something simple is good for now)

    assert isinstance(n, int) and n >= 0

    if n == 0:
        return "0"

    digits = []

    while n:
        digits.append(n%9)
        n //= 9

    output = [str(digits.pop())]

    while digits:
        output.append("9*")
        d = digits.pop()

        if d:
            output.append(str(d))
            output.append("+")

    output = "".join(output)

    if output.startswith("19*"):
        return "9" + output[3:]

    return output

def translate(program_str):
    if program_str.count("(") != program_str.count(")"):
        exit("Error: number of opening and closing parentheses do not match")

    program = program_str.splitlines()
    row_len = max(len(row) for row in program)
    program = [row.ljust(row_len) for row in program]
    num_stacks = len(program)


    loop_offset = 3
    stack_len_offset = program_str.count("(")*2 + loop_offset
    stack_offset = stack_len_offset + 1
    output = [[1, ["v"]], [1, [">"]]] # (len, [strings]) for each row
    max_len = 1 # Maximum row length so far

    HEADER_ROW = 0
    MAIN_ROW = 1
    FOOTER_ROW = 2
    # Then stack lengths, then loop rows, then stacks

    # Match closing parens with opening parens
    loop_map = {} # {column: (loop num, stack number to check, is_start)}
    loop_stack = []
    loop_num = 0

    for col in range(row_len):
        col_str = "".join(program[stack][col] for stack in range(num_stacks))

        if col_str.count("(") + col_str.count(")") >= 2:
            exit("Error: more than one parenthesis in a column")

        if "(" in col_str:
            stack_num = col_str.index("(")

            loop_map[col] = (loop_num, stack_num, True)
            loop_stack.append((loop_num, stack_num, False))
            loop_num += 1

        elif ")" in col_str:
            if loop_stack:
                loop_map[col] = loop_stack.pop()

            else:
                exit("Error: mismatched parentheses")


    def pad_max(row):
        nonlocal max_len, output

        while len(output) - 1 < row:
            output.append([0, []])

        if output[row][0] < max_len:
            output[row][1].append(" "*(max_len - output[row][0]))
            output[row][0] = max_len


    def write(string, row):
        nonlocal max_len, output

        output[row][1].append(string)
        output[row][0] += len(string)

        max_len = max(output[row][0], max_len)


    def stack_len(stack, put=False):
        return (to_befunge_num(stack) + # x
                str(stack_len_offset) + # y
                "gp"[put])


    def get(stack, offset=0):
        assert offset in [0, 1] # 1 needed for 2-arity ops

        # Check stack length
        write(stack_len(stack) + "1-"*(offset == 1) + ":0`", MAIN_ROW)

        pad_max(HEADER_ROW)
        pad_max(MAIN_ROW)
        pad_max(FOOTER_ROW)

        write(">" + to_befunge_num(stack + stack_offset) + "g", HEADER_ROW)
        write("|", MAIN_ROW)
        write(">$0", FOOTER_ROW)

        pad_max(HEADER_ROW)
        pad_max(MAIN_ROW)
        pad_max(FOOTER_ROW)

        write("v", HEADER_ROW)
        write(">", MAIN_ROW)
        write("^", FOOTER_ROW)


    def put(stack, value=""):
        put_inst = (value +
                    stack_len(stack) +
                    to_befunge_num(stack + stack_offset) +
                    "p")

        post_insts.append(put_inst)


    def pop(stack):
        put(stack, "0")


    def inc_stack_len(stack):
        post_insts.append(stack_len(stack) + "1+")
        post_insts.append(stack_len(stack, put=True))


    def dec_stack_len(stack):
        post_insts.append(stack_len(stack) + ":0`-") # Ensure nonnegativity
        post_insts.append(stack_len(stack, put=True))


    # Technically not necessary to initialise stack lengths per spec, but it makes it
    # more portable and easier to test against other Befunge interpreters

    for stack in range(num_stacks):
        write("0" + stack_len(stack, put=True), MAIN_ROW)

    for col in range(row_len):
        post_insts_all = []

        loop_start = False
        loop_end = False

        if col in loop_map:
            if loop_map[col][2]:
                loop_start = True
            else:
                loop_end = True

        if loop_start:
            loop_row = loop_offset + 2*loop_map[col][0]
            get(loop_map[col][1])

        elif loop_end:
            get(loop_map[col][1])
            write("!", MAIN_ROW)


        for stack in range(num_stacks-1, -1, -1):
            char = program[stack][col]
            post_insts = [] # Executed after the gets in reverse order, i.e. last added first

            if char in " ()":
                continue

            # Pre-inc, post-dec
            elif char.isdigit():
                inc_stack_len(stack)
                put(stack, char)

            elif char == "?":
                inc_stack_len(stack)
                put(stack, "&")

            elif char == "!":
                get(stack)
                post_insts.append(".91+," if NUMERIC_OUTPUT else ",")
                pop(stack)
                dec_stack_len(stack)

            elif char == "#":
                pop(stack)
                dec_stack_len(stack)

            elif char in "+-":
                get(stack, 1)
                get(stack)
                post_insts.append(char)
                pop(stack) # This one first in case of ! or 1!
                post_insts.append(stack_len(stack) + ":1`-:1\\`+") # Ensure >= 1
                post_insts.append(stack_len(stack, put=True))
                put(stack)                

            elif char in "^v":
                offset = -1 if char == "^" else 1

                get((stack + offset) % num_stacks)
                inc_stack_len(stack)
                put(stack)

            else:
                exit("Error: invalid character " + char)

            post_insts_all.append(post_insts)


        while post_insts_all:
            write("".join(post_insts_all.pop()), MAIN_ROW)

        if loop_start or loop_end:
            loop_row = loop_offset + 2*loop_map[col][0]

            pad_max(HEADER_ROW)
            pad_max(MAIN_ROW)
            pad_max(loop_row)
            pad_max(loop_row + 1)

            write(">v", HEADER_ROW)
            write("|>", MAIN_ROW)

            if loop_start:
                write(" ^", loop_row)
                write(">", loop_row + 1)

            else:
                write("<", loop_row)
                write(" ^", loop_row + 1)


    write("@", MAIN_ROW)
    return "\n".join("".join(row) for row_len, row in output)

if __name__ == '__main__':
    if len(sys.argv) < 3:
        exit("Usage: py -3 prefunge.py <input filename> <output filename>")

    with open(sys.argv[1]) as infile:
        with open(sys.argv[2], "w") as outfile:
            outfile.write(translate(infile.read()))

মত দৌড়াও py -3 prefunge.py <input filename> <output filename>

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

প্রশ্নটি Befunge-93 অনুবাদক উপলব্ধ করা হয় না, তাই আমি ব্যবহার এই এক , যা বৈশিষ্ট থেকে সামান্য ভিন্ন। দুটি মূল পার্থক্য হ'ল:

  • যদি প্রোগ্রামের প্রদত্ত সারিতে কোনও চর উপস্থিত না থাকে, তবে আপনি সেই সারিতে লিখতে পারবেন না। এর অর্থ শেষে পর্যাপ্ত নতুন লাইনগুলি প্রবর্তন করতে আপনাকে বেশ কয়েকবার এন্টার চাপতে হবে । আপনি যদি NaNআউটপুটটি দেখতে পান তবে এটি সম্ভবত সম্ভাব্য কারণ।

  • গ্রিড কোষগুলি শূন্যের পূর্বরূপ নয় - সুবিধার্থে আমি বেফুঞ্জ আউটপুটগুলিতে কিছু প্রাক-পূর্বায়ন অন্তর্ভুক্ত করেছি, তবে এটি স্কোর করা শুরু করার সময় আমি এটিকে সরিয়ে নিয়ে যেতে পারি।

আউটপুট প্রোগ্রামগুলির মূল বিন্যাসটি হ'ল:

v [header row]
> [main row]
  [footer row]
  ---
   |
   | rows for loops (2 per loop)
   |
  ---
  [stack length row]
  ---
   |
   | rows for stack space (1 per voice)
   |
  ---

স্ট্যাক স্পেসটি প্রোগ্রামের বাইরে, অতএব, নতুন লাইন এন্টার-স্প্যামিং মন্তব্য আগে থেকেই।

মূল ধারণাটি হ'ল প্রতিটি ভয়েসকে একটি সারি নির্ধারণ করা যা এটির স্ট্যাক হিসাবে কাজ করে। এই স্ট্যাকগুলি বজায় রাখতে, আমাদের একটি বিশেষ স্ট্যাক দৈর্ঘ্যের সারিও রয়েছে যেখানে প্রতিটি স্ট্যাকের দৈর্ঘ্য সারি বরাবর একটি ঘরে রেকর্ড করা হয়। প্রোগ্রামটি তখন প্রচুর পরিমাণে gএবং pইউটিএস হয়, যেমন প্রক্রিয়াটি প্রিন্ট করার জন্য:

  • সেলটি পান y = stack_row[stack], x = stack_length[stack]
  • পারফর্ম করুন .91+,, অর্থাৎ পূর্ণসংখ্যা হিসাবে মুদ্রণ করুন তারপরে একটি নতুন লাইন মুদ্রণ করুন
  • উপরের দিকের কক্ষগুলিতে ঘরটি 0 এর সাথে প্রতিস্থাপন করুন (পপিং অনুকরণ করতে)
  • হ্রাস stack_length[stack]

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

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

লুপগুলির জন্য, কারণ প্রিলেড লুপগুলি উভয় উপায়ে ঝাঁপিয়ে পড়তে পারে, আমরা একটি কনফিগারেশনে প্রতি লুপে দুটি সারি ব্যবহার করি:

       >v                     >v
(cond) |>  (program)  (cond) !|>

        ^                     <
       >                       ^

এই লুপগুলি বর্তমানে বেশিরভাগ বাইট তৈরি করে তবে এগুলি দিয়ে কোডবক্সে রেখে সহজেই গল্ফ করা যায় p যা সঠিকভাবে কাজ করছে বলে আমি খুশি হওয়ার পরে আমি যা করার পরিকল্পনা করছি।

এখানে কিছু উদাহরণ আউটপুট ?(1-^!), যেমন এখানে মুদ্রণ n-1করুন 0:

v                        >6gv>v                      >6gv      >6gv                                 >6gv                   >6gv                           >6gv >v
>005p05g1+05p&05g6p05g:0`|  >|>05g1+05p105g6p05g1-:0`|  >05g:0`|  >-005g6p05g:1`-:1\`+05p05g6p05g:0`|  >05g1+05p05g6p05g:0`|  >.91+,005g6p05g:0`-05p05g:0`|  >!|>@
                         >$0^                        >$0^      >$0^                                 >$0^                   >$0^                           >$0^
                              ^                                                                                                                                <
                             >                                                                                                                                  ^

স্কয়ার-ইনপুট:

v                                >8gv      >8gv             >v      >6gv                                   >8gv      >8gv        >7gv      >7gv                                                            >8gv >v      >7gv
>005p015p025p25g1+25p&25g8p25g:0`|  >25g:0`|  >05g1+05p05g6p|>05g:0`|  >15g1+15p15g7p25g1+25p125g8p25g1-:0`|  >25g:0`|  >15g1-:0`|  >15g:0`|  >+015g7p15g:1`-:1\`+15p15g7p-025g8p25g:1`-:1\`+25p25g8p25g:0`|  >!|>15g:0`|  >.91+,015g7p15g:0`-15p@
                                 >$0^      >$0^                     >$0^                                   >$0^      >$0^        >$0^      >$0^                                                            >$0^         >$0^
                                                             ^                                                                                                                                                  <
                                                            >                                                                                                                                                    ^

বিভাগ (ছোট ইনপুট সুপারিশ করা হয়):

v                                                                          >91+gv>v      >94+gv                                                         >95+gv      >95+gv        >93+gv      >93+gv                                                                    >93+gv      >93+gv               >v      >93+gv                                                     >93+gv >v      >92+gv                  >v      >92+gv                                       >92+gv                                       >91+gv                                       >93+gv                     >91+gv                       >92+gv      >92+gv        >91+gv      >91+gv                                                                                      >92+gv >v                        >91+gv      >91+gv                                     >91+gv >v                        >95+gv      >95+gv                                     >95+gv
>009p019p029p039p049p09g1+09p109g91+p29g1+29p&29g93+p39g1+39p&39g94+p09g:0`|    >|>39g:0`|    >009g91+p09g:0`-09p29g1+29p29g93+p49g1+49p149g95+p49g1-:0`|    >49g:0`|    >29g1-:0`|    >29g:0`|    >-029g93+p29g:1`-:1\`+29p29g93+p+049g95+p49g:1`-:1\`+49p49g95+p29g:0`|    >29g:0`|    >19g1+19p19g92+p|>29g:0`|    >09g1+09p109g91+p19g1+19p19g92+p29g1+29p029g93+p29g:0`|    >!|>19g:0`|    >029g93+p29g:0`-29p|>19g:0`|    >09g1+09p09g91+p019g92+p19g:0`-19p19g:0`|    >019g92+p19g:0`-19p29g1+29p29g93+p09g:0`|    >009g91+p09g:0`-09p19g1+19p19g92+p29g:0`|    >19g1+19p19g92+p09g:0`|    >19g1+19p19g92+p19g1-:0`|    >19g:0`|    >09g1-:0`|    >09g:0`|    >-009g91+p09g:1`-:1\`+09p09g91+p+019g92+p19g:1`-:1\`+19p19g92+p029g93+p29g:0`-29p19g:0`|    >!|>09g1+09p109g91+p09g1-:0`|    >09g:0`|    >+009g91+p09g:1`-:1\`+09p09g91+p09g:0`|    >!|>49g1+49p149g95+p49g1-:0`|    >49g:0`|    >-049g95+p49g:1`-:1\`+49p49g95+p49g:0`|    >.91+,049g95+p49g:0`-49p@
                                                                           >$0  ^        >$0  ^                                                         >$0  ^      >$0  ^        >$0  ^      >$0  ^                                                                    >$0  ^      >$0  ^                       >$0  ^                                                     >$0  ^         >$0  ^                          >$0  ^                                       >$0  ^                                       >$0  ^                                       >$0  ^                     >$0  ^                       >$0  ^      >$0  ^        >$0  ^      >$0  ^                                                                                      >$0  ^                           >$0  ^      >$0  ^                                     >$0  ^                           >$0  ^      >$0  ^                                     >$0  ^
                                                                                  ^                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <
                                                                                 >                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ^
                                                                                                                                                                                                                                                                                                          ^                                                                        <
                                                                                                                                                                                                                                                                                                         >                                                                          ^
                                                                                                                                                                                                                                                                                                                                                                                                                    ^                                                                                                                                                                                                                                                                                                                                              <
                                                                                                                                                                                                                                                                                                                                                                                                                   >                                                                                                                                                                                                                                                                                                                                                ^

এর 07p07gসাথে প্রতিস্থাপনের মতো মনে আছে এমন অন্যান্য ছোট ছোট অপটিমেশনও রয়েছে :07p, তবে আমি একবারে এই পদক্ষেপ নিচ্ছি :)


So. অনেক। বিনামূল্যে। সময়।
অপ্টিমাইজার

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