স্ব-ব্যাখ্যা দোভাষী


25

এই প্রশ্নের কাছে জর্জ এডিসনের একটি মন্তব্যের ভিত্তিতে , ক্ষুদ্রতম স্ব-ব্যাখ্যামূলক দোভাষী লিখুন।

  • আপনি নিজের পছন্দ করার ভাষা ব্যবহার করতে পারেন।
  • খালি ভাষা গণনা করে না। আপনার প্রোগ্রামটি কমপক্ষে দুটি অক্ষর দীর্ঘ হতে হবে।
  • প্রোগ্রামটির পুরো ভাষার ব্যাখ্যা করার দরকার নেই , ভাষার বৈশিষ্ট্যগুলির কেবলমাত্র একটি টুরিং-সম্পূর্ণ উপসেট (এতে দোভাষী রয়েছে)।
  • Quines গণনা করা হয় না।
  • আপনার ভাষার অন্তর্নির্মিত evalফাংশন বা সমতুল্য ব্যবহার করবেন না । একই জন্য apply, ইত্যাদি।

1
(হুম .. আমার সাথে কিছু করা উচিত /usr/bin/cat) টুরিং-সম্পূর্ণতা সম্পর্কে কী বলা যায়?
মিং-টাং

@ শিনকিরাউ: ধন্যবাদ, আমি এটিকে পরীক্ষা হিসাবে ভাবি নি। আপডেট করা হয়েছে।
হোয়া লং ট্যাম

সম্পর্কিত: স্ট্যাক ওভারফ্লোতে নিজেই লিখিত ভাষা W / ক্ষুদ্রতম দোভাষী , যদিও এখানে কয়েকটি দেওয়া নিয়ম মেনে চলার কয়েকটি (কেবল একটিই?) উত্তর রয়েছে answers
dmckee

1
আমাদের কি সেই স্কিম সেক্সপ পার্সার আবার লিখতে হবে, বা আমরা হোস্ট ভাষার ঠিকঠাক বিবেচনা করতে পারি?
জেবি

@ জেবি: sexpপার্সার সহ ভাষার স্ট্রিং প্রসেসিং ইউটিলিটিগুলি ভাল ।
হোয়া লং ট্যাম

উত্তর:


19

সিআই - 260

,(1p0(2d())(41(2d())('#((1p0()(10()(1d,1p$)=)<)$2d,1p$)(40(1d,1c$^)(''(1d,^)('0
'9('0-(,'0'9('0-2p10*+1p$)(!1d)~)$^)(0($)'$(^)'^(&)'&(c)'c(p)'p(d)'d(=)'=(<)'<(
>)'>(~)'~(.)'.(,)',(!)'!(+)'+(-)'-(*)'*(/)'/(%)'%()38p(1p3p0(3d)((2)(3)=p1d1p$)
=)$)~)=)=,2p$&)=)=)<)$$

320 → 260: সাধারণ অক্ষর থেকে নির্দেশ ম্যাপিংগুলিকে পুশ করুন, তারপরে এগুলি ভাঁজ করুন। এটি প্রতি কেস কোডের আকার অর্ধেক করে (18 টি কেস আছে), তবে ভাঁজ করতে 30 টি অক্ষর লাগে।

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

1^      # Push a 1, and "lift" it to be a code literal.
(5 +)   # Define a code literal.
&       # Join the two code literals, forming (1 5 +)
$       # Execute the code literal.

ইন্টারপ্রেটার পুরো প্রোগ্রামটি চালানোর আগে একটি কোড টুকরা তৈরি করে, তাই এটি সংকলক হিসাবেও বিবেচনা করা যেতে পারে। এ কারণে, দোভাষীকে স্ট্যাক করার ফলে ক্ষতিকারক রান-টাইম ওভারহেডের ফলাফল হয় না।

দোভাষী তার অপারেটরগুলির সমস্ত সরাসরি হোস্ট ইন্টারপ্রেটার থেকে প্রাপ্ত করে। যাইহোক, এটি নিজেই বিশ্লেষণ করে, তাই কোডের বেশিরভাগটি কেবল সিকোয়েন্সগুলি যা স্ব স্ব কোডগুলিকে অক্ষরে অক্ষরে অনুবাদ করে। এটি ব্যবহারের মতো নয় eval, তবে এটি প্রকাশ করে যে কোনও প্রোগ্রামিং ভাষার বাস্তবায়ন তার হোস্ট ভাষা / আর্কিটেকচারের শব্দার্থবিজ্ঞানের উপর কতটা নির্ভরশীল।


ভাষার উল্লেখ:

এখানে দোভাষী পান

ব্লক

  • ( ... )

    একটি "ব্লক" তৈরি করুন, যা কার্যকরভাবে কোনও প্রসঙ্গ ছাড়াই নির্দেশের একটি তালিকা। অভ্যন্তরীণভাবে, এটি মেশিন কোডও হতে পারে।

  • বাধা $

    একটি ব্লক কল করুন। কলিকে বিশ্বব্যাপী স্ট্যাক দেওয়া হয়, যার মধ্যে ব্লকটি ডাকা হয় called

  • মান ^

    একটি মান উত্তোলন। যথা, এটিকে এমন একটি ব্লকে পরিণত করুন যা সেই মানটিকে ধাক্কা দেয়।

    উদাহরণ :

       1 ^
    == (1)
    
  • block1 block2 &

    দু'টি ব্লকে যোগ দিন, এমন একটি তৈরি করুন যা উভয় ধারাবাহিকভাবে চলমান।

    উদাহরণ :

       (1) (2) &
    == (1 2)
    

স্ট্যাক হেরফের

  • এন c

    স্ট্যাকের নবম মানটি অনুলিপি করুন।

    উদাহরণ :

       5 4 3 2 1 0 3c
    == 5 4 3 2 1 0 3
    
  • এন p

    স্ট্যাকের নবম মানটি এনে দিন (এটিকে সরিয়ে দিন এবং সামনে আনুন)।

    উদাহরণ :

       5 4 3 2 1 0 3p
    == 5 4 2 1 0 3
    
  • এন d

    স্ট্যাক থেকে এন মানগুলি ফেলে দিন। 0dএকটি অপ- অপ হয়।

    উদাহরণ :

       5 4 3 2 1 0 3d
    == 5 4 3
    

রিলেশনাল অপারেটর

  • ab (on_true) (on_false) =

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

    উদাহরণ :

       3 3 ('0+ .) (1d) =
    == 3 '0+ .
    
  • ab (on_true) (on_false) <

    একটি খ এর চেয়ে কম হলে পরীক্ষা করুন। a এবং b অবশ্যই পূর্ণসংখ্যা হবে।

    উদাহরণ :

       3 5 (1d 5) () <
    == 3 1d 5
    == 5
    
  • ab (on_true) (on_false) >

    খ এর চেয়ে বড় হলে পরীক্ষা করুন। a এবং b অবশ্যই পূর্ণসংখ্যা হবে।

    উদাহরণ :

       3 5 (1d 5) () >
    == 3
    
  • একটি লো হাই (on_true) (on_false) ~

    Lo <= a <= হাই থাকলে পরীক্ষা করুন। ক, ল, এবং হাই অবশ্যই পূর্ণসংখ্যা হবে।

    উদাহরণ :

       3 0 10 ('0+ .) (1d) ~
    == 3 '0+ .
    

ইনপুট / আউটপুট

  • .

    অক্ষর সি রাখুন (স্ট্যাক থেকে এটি গ্রাস করে)।

  • ,

    একটি চরিত্র পান এবং এটি স্ট্যাকের দিকে ধাক্কা। যদি ফাইলের শেষে পৌঁছে যায়, -1 ধাক্কা দেওয়া হয়।

  • !

    একটি চরিত্র ভুলে যান। সিতে আনজেটকের মতো, কেবলমাত্র একটি পুশব্যাক অনুমোদিত।

পূর্ণসংখ্যার আক্ষরিক

  • 'c

    চরিত্রটি পুশ করুন গ।

  • [0-9]

    দশমিক পূর্ণসংখ্যার ধাক্কা।

পাটীগণিত

  • AB +
  • AB -
  • AB *

    দুটি সংখ্যা যোগ / বিয়োগ / গুণ করা।

    উদাহরণ :

       3 5 + 7 3 + *
    == 80
    
  • AB /

  • AB %

    বিভাগ এবং মডুলাস। সি থেকে ভিন্ন, এই গোলগুলি নেতিবাচক অসীমের দিকে।

বিবিধ

  • কোড #মন্তব্য

    #চরিত্র লাইনের শেষে সবকিছু আউট মন্তব্য।

  • )

    ব্লক শেষ করতে ব্যবহৃত হয়। পুরো প্রোগ্রামটি শেষ করতেও ব্যবহার করা যেতে পারে।

  • অন্য সমস্ত চরিত্র উপেক্ষা করা হয়।


24

বাইনারি ল্যাম্বদা ক্যালকুলাস, 232 বিট (29 বাইট)

0101000110100000000101011000000000011110000101111110011110000101110011110000001111000010110110111001111100001111100001011110100111010010110011100001101100001011111000011111000011100110111101111100111101110110000110010001101000011010

বিস্তারিত জানার জন্য http://en.wikedia.org/wiki/Binary_lambda_calculus# লাম্বদা_কোডিং দেখুন


2
কেন এটি গৃহীত উত্তর ডি নয়: বিএলসি আশ্চর্যজনক!
বিড়াল

আপনি এটাকে আদৌ ব্যাখ্যা করতে পারবেন?
পাইরুলেজ

1
দুর্ভাগ্যক্রমে, উইকিপিডিয়া বাইনারি ল্যাম্বদা ক্যালকুলাস পৃষ্ঠাটি সরিয়ে দিয়েছে। আমার ট্রম্প.github.io/cl/cl.html পৃষ্ঠাগুলি একটি সংরক্ষিত অনুলিপি এবং একটি কাগজের সাথে লিখিত হয়েছে যা আমি দোভাষীর কার্যকারিতা ব্যাখ্যা করে লিখেছিলাম।
জন ট্রম্প

13

আমি এটির জন্য কৃতিত্ব নিতে পারি না , তবে আমি ভেবেছিলাম যে আমি এই আশ্চর্যজনকটি ভাগ করব:

ব্রেইনফ *** (423)

>>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++++<<-]+>>>,<++[[>[
->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<
]<]<[[<]>[[>]>>[>>]+[<<]<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>
+<[>>+<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+>>-[<<+>++>-
[<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>]<<[->>>>>>>>]<<[>.>>>>>>>]<<[
>->>>>>]<<[>,>>>]<<[>+>]<<[+<<]<]

10

ব্লকস্ক্রিপ্ট - 535

{[B':=?0:B';=?0:B'}=?0:B'{=?,A!,A!d1c&:B'?=?,A!,A!2e&:B''=?,,A!d3c&:B{[B'0<?0:B
'9>?0:1}!?B'0-{[,g!?c'0-B10*d+A!:Bd]A!d3c&}!:B'#=?{[,10=?,]A!:A!}!:,A!Bb&}{[AC[
B]DB?[AB{[Bh&hbhn!}{[B[AB]C?1-eA!:b}&[C1=?E[C]FHc&B!:C2=?{G?D:E[C}!FHcI!:C3=?E[
C]B!:C'!=?G[ABC]Hc&dbh&D?b@I!B!:b@I!:C'&=?HB!:C'@=?FGDI!:C'[=?GF&HDI!:C']=?F[A]
HDI!:C',=?,B!:C'.=?G.FHDI!:C'a'z{[DC<?0:DB>?0:1}!?Ce-HA!B!:C'A'Ze!?F[B]Cg-dA!B!
:{C'+=?{[CB+}:C'-=?{[CB-}:C'*=?{[CB*}:C'/=?{[CB/}:C'%=?{[CB%}:C'<=?{[CB<}:C'>=?
{[CB>}:C'==?{[CB=}:0}!?H[A][B]Ge!B!:FHDI!:c},c!0ac&0&0&0bho!;

ব্লকস্ক্রিপ্ট একটি তুচ্ছ স্প্যাগেটি স্ট্যাক ভিত্তিক ভাষা যা আমি এই চ্যালেঞ্জটির জন্য বিশেষভাবে তৈরি করেছি। বেস ইন্টারপ্রেটার ব্লকসক্রিপ্ট

নমুনা প্রোগ্রাম (প্রথম 15 ফিবোনাচি সংখ্যা মুদ্রণ করে):

{[B?B10/A!B10%d&:0}
{[B0<?'-.0B-A!:{B?Bh!{[B?B[A]A!B[B]'0+.:}!:'0.}!10.}
{[B?Dd!DC+B1-CecA!:}
0 1 15d!
;

দোভাষী তার ক্রম অনুযায়ী স্ট্যান্ডার্ড ইনপুট থেকে উত্স কোড এবং প্রোগ্রাম ইনপুট উভয়ই পড়েন। এর অর্থ হ'ল একজন দোভাষীর মধ্যে একজন অনুবাদকের মধ্যে দোভাষী চালানো, কেবল অনুলিপি করুন এবং পেস্ট করুন:

# Level 1
{[B':=?0:B';=?0:B'}=?0:B'{=?,A!,A!d1c&:B'?=?,A!,A!2e&:B''=?,,A!d3c&:B{[B'0<?0:B
'9>?0:1}!?B'0-{[,g!?c'0-B10*d+A!:Bd]A!d3c&}!:B'#=?{[,10=?,]A!:A!}!:,A!Bb&}{[AC[
B]DB?[AB{[Bh&hbhn!}{[B[AB]C?1-eA!:b}&[C1=?E[C]FHc&B!:C2=?{G?D:E[C}!FHcI!:C3=?E[
C]B!:C'!=?G[ABC]Hc&dbh&D?b@I!B!:b@I!:C'&=?HB!:C'@=?FGDI!:C'[=?GF&HDI!:C']=?F[A]
HDI!:C',=?,B!:C'.=?G.FHDI!:C'a'z{[DC<?0:DB>?0:1}!?Ce-HA!B!:C'A'Ze!?F[B]Cg-dA!B!
:{C'+=?{[CB+}:C'-=?{[CB-}:C'*=?{[CB*}:C'/=?{[CB/}:C'%=?{[CB%}:C'<=?{[CB<}:C'>=?
{[CB>}:C'==?{[CB=}:0}!?H[A][B]Ge!B!:FHDI!:c},c!0ac&0&0&0bho!;

# Level 2
{[B':=?0:B';=?0:B'}=?0:B'{=?,A!,A!d1c&:B'?=?,A!,A!2e&:B''=?,,A!d3c&:B{[B'0<?0:B
'9>?0:1}!?B'0-{[,g!?c'0-B10*d+A!:Bd]A!d3c&}!:B'#=?{[,10=?,]A!:A!}!:,A!Bb&}{[AC[
B]DB?[AB{[Bh&hbhn!}{[B[AB]C?1-eA!:b}&[C1=?E[C]FHc&B!:C2=?{G?D:E[C}!FHcI!:C3=?E[
C]B!:C'!=?G[ABC]Hc&dbh&D?b@I!B!:b@I!:C'&=?HB!:C'@=?FGDI!:C'[=?GF&HDI!:C']=?F[A]
HDI!:C',=?,B!:C'.=?G.FHDI!:C'a'z{[DC<?0:DB>?0:1}!?Ce-HA!B!:C'A'Ze!?F[B]Cg-dA!B!
:{C'+=?{[CB+}:C'-=?{[CB-}:C'*=?{[CB*}:C'/=?{[CB/}:C'%=?{[CB%}:C'<=?{[CB<}:C'>=?
{[CB>}:C'==?{[CB=}:0}!?H[A][B]Ge!B!:FHDI!:c},c!0ac&0&0&0bho!;

# Level 3
{[B?B10/A!B10%d&:0}
{[B0<?'-.0B-A!:{B?Bh!{[B?B[A]A!B[B]'0+.:}!:'0.}!10.}
{[B?Dd!DC+B1-CecA!:}
0 1 15d!
;

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


ভাষার উল্লেখ:

এখানে দোভাষী পান

ব্লকস্ক্রিপ্টে, "স্ট্যাক" কোনও অ্যারে নয় যা পরের ক্রিয়াকলাপগুলির দ্বারা ওভাররাইট করা হয় যেমন আপনার ব্যবহৃত হতে পারে। এটি আসলে অপরিবর্তনীয় লিঙ্ক তালিকা হিসাবে প্রয়োগ করা হয় এবং প্রোগ্রামের সময়কালের জন্য একটি স্ট্যাক স্থির থাকে। এছাড়াও, কোনও অপারেটর (বাদে @) স্ট্যাক থেকে মানগুলি সরায় না। তবে, স্ট্যাক পরিবর্তনগুলি কেবল যে ব্লকটিতে ঘটে সেগুলি প্রভাবিত করে।

মান নির্বাচন

  • a মাধ্যমে z

    স্ট্যাক থেকে 0-25 তম আইটেমটি আনুন এবং স্ট্যাকের দিকে চাপ দিন। aস্ট্যাকের মাথা, বা সর্বাধিক ধাক্কা দেওয়া আইটেমকে বোঝায়।

  • A মাধ্যমে Z

    বর্তমান ফ্রেমের 0-25 তম আইটেমটি আনুন এবং স্ট্যাকের দিকে চাপ দিন।

  • [

    স্ট্যাকের মাথায় স্ট্যাক রেফারেন্স (নীচে দেখুন) থেকে আইটেম নির্বাচন করতে একটি "ফ্রেম" খুলুন। [কোনও মিলের প্রয়োজন হয় না ], তবে ফ্রেমগুলিকে লেক্সিকালি স্কোপ করা হয়। ব্লকস্ক্রিপ্টে, "সুযোগ" নির্ধারণ করা হয় বন্ধনীগুলি ( {... }) যা ব্লক তৈরি করে by সুতরাং, কোনও ব্লকের ভিতরে ফ্রেম খোলার ফলে ব্লকের বাইরের কোডের কোনও প্রভাব পড়বে না।

  • ]

    পূর্ববর্তী ফ্রেমে ফিরে (বর্তমান যদি থাকে) বর্তমান ফ্রেমটি বন্ধ করুন।

ব্লক

  • { ... }

    একটি "ব্লক" তৈরি করুন, এবং এটি স্ট্যাকের দিকে ঠেলাও। একটি ব্লকের অভ্যন্তরে, স্ট্যাকটি ব্লকের আগে যা শুরু হয়েছিল তার থেকে শুরু হবে, কলারের স্ট্যাকটি বাদ দিয়ে উপরে চাপ দেওয়া হবে। ব্লকস্ক্রিপ্টে স্ট্যাকগুলি স্থির এবং অপরিবর্তনীয়, তাই ব্লকগুলি ক্লোজার ures আইডিয়ামটির {[অর্থ একটি ব্লক খুলুন, তারপরে আর্গুমেন্টগুলি নির্বাচন করার জন্য একটি ফ্রেম খুলুন ( Aমাধ্যমে ব্যবহার করা Z)। একটি ব্লক ফেরত মান স্ট্যাক প্রধান যখন }উপনিত।

    উদাহরণ:

    '3 '2 '1 {[ b. d. f. B. C. D. A! } 'D 'C 'B d!;
    

    এই মুদ্রণ 123BCD123DCB123BCD123DCB…। ছোট হাতের অক্ষরগুলি স্ট্যাকের মানগুলিকে বোঝায়, যখন বড় হাতের অক্ষরগুলি আর্গুমেন্টগুলিকে উল্লেখ করে (কারণ ফ্রেমটি কলারের স্ট্যাকের সাথে সেট করা থাকে)। A!কলারের শিরোনাম নেয় (যেটিকে ব্লক বলা হচ্ছে তার নিশ্চয়তা) এবং এটি কল করে। আপনি যদি ভাবছেন যে এটি প্রতিবার কেন বিপরীত BCDহয়, কারণ এটি B. C. D.যুক্তিগুলি ব্লকটি কল করার ঠিক আগে বিপরীত ক্রমে চাপ দেয়।

  • !

    একটি ব্লক কল করুন। স্ট্যাকের জন্য রিটার্ন মানটি পুশ করুন।

স্ট্যাক রেফারেন্স

  • &

    একটি স্ট্যাকের রেফারেন্স তৈরি করুন এবং এটিকে স্ট্যাকের দিকে ঠেলে দিন। এটিকে "সুপার-কনস" হিসাবে ভাবুন, কারণ এটি স্ট্যাকের প্রতিটি আইটেমকে কার্যকরভাবে গ্রহণ করে এবং এর মধ্যে একটি "টিপল" গঠন করে। বাগ্ধারা &[মানে যে যাই হোক না কেন a, b, cউল্লেখ করার আগে এখন অ্যাক্সেস করতে A, B, C(অবরোধ বাকি জন্য অথবা পর্যন্ত ]সম্মুখীন হয় না)।

    অংশ হিসাবে কারণ &এটি সাধারণত প্রয়োজনের চেয়ে বেশি মান ক্যাপচার করে, ব্লকস্ক্রিপ্ট ডিজাইনের মাধ্যমে মেমরি ফাঁস করে।

  • @

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

শর্তাধীন অভিব্যক্তি

  • ? <সত্যে> : <মিথ্যে>

    শর্তসাপেক্ষ অভিব্যক্তি, ঠিক যেমন সি এর তিনটি অপারেটরের মতো, এটি যদি a"সত্য" হয় (এটি হল পূর্ণসংখ্যার শূন্যের সমান নয়), তবে <সত্য>> করুন , অন্যথায় <মিথ্যে> ​​করুন

ইনপুট / আউটপুট

দ্রষ্টব্য: ইনপুট এবং আউটপুট ইউটিএফ -8 এ সম্পন্ন হয়। একটি "চরিত্র" হ'ল একটি ইউনিকোড সূচকের সাথে সম্পর্কিত একটি পূর্ণসংখ্যা।

  • ,

    ইনপুট পরবর্তী অক্ষর পান, এবং এটি স্ট্যাকের দিকে ধাক্কা। যদি ইনপুটটির শেষে পৌঁছে যায়, পরিবর্তে -1 টিপুন।

  • .

    স্ট্যাকের মাথায় চরিত্রটি আউটপুট করুন।

পূর্ণসংখ্যা / চরিত্রের আক্ষরিক

দ্রষ্টব্য: ব্লকস্ক্রিপ্টে পূর্ণসংখ্যা এবং অক্ষরগুলি একই জিনিস।

  • 'c

    চরিত্রটি পুশ করুন গ।

  • [0-9]

    দশমিক পূর্ণসংখ্যার ধাক্কা।

পাটীগণিত

এই অপারেটরগুলি কেবল পূর্ণসংখ্যার মানগুলিতে কাজ করে।

  • +গণনা b+ a(ফলাফলটি ধাক্কা দিচ্ছে, তবে কোনও মানই ছাড়ছে না)।
  • -গণনা b- a
  • *গণনা b* a
  • /গণনা b/ a(পূর্ণসংখ্যা বিভাগ; ​​নেতিবাচক অসীমের দিকে রাউন্ড)।
  • %গণনা b% a(পূর্ণসংখ্যা মডুলাস; নেতিবাচক অসীমের দিকে রাউন্ড)।

রিলেশনাল অপারেটর

এই অপারেটরগুলি কেবল পূর্ণসংখ্যার মানগুলিতে কাজ করে।

  • <এর bচেয়ে কম হলে a1 টি চাপুন, অন্যথায় 0 চাপুন।
  • >
  • =

বিবিধ

  • # লাইনের শেষে মন্তব্য করুন
  • প্রোগ্রামটি শেষ হতে হবে ;
  • অন্য সমস্ত চরিত্র উপেক্ষা করা হয়।

2
খ্রীষ্ট। আপনি সিআই-র মতো কি অনুমান ভাগ করে নিতে চান?
কেসি

@ ক্যাসি: একটি রেফারেন্স যুক্ত হয়েছে।
জোয়ে অ্যাডামস

1
আপনি কি স্বপ্ন দেখছেন তা জানতে আগ্রহী হবেন? ... স্তরে ৪
মাতীন উলহাক

3

জোজোটেজ এলআইএসপি : 414

একটি দুর্দান্ত ব্লক পেতে যোগ করা লাইনফিডগুলি প্রয়োজন হয় না এবং গণনা করা হয় না।

((\(E V A L)(E(r)'(())))(\(x e)(?(s x)(V x e)((\(b j)(?(= b ")(a j)(?(= b \)x
(?(= b ?)(?(E(a j)e)(E(a(d j))e)(E(a(d(d j)))e))(?(s b)(A b(E(a j)e)(E(a(d j)
)e))(E(a(d(d b)))(L(a(d b))j e)))))))(E(a x)e)(d x))))(\(x g)(? g(?(= x(a(a
g)))(d(a g))(V x(d g)))x))(\(f h v)(?(= f r)(r)(?(= f p)(p h)(?(= f s)(s h)(?
(= f a)(a h)(?(= f d)(d h)(?(= f =)(= h v)(c h v))))))))(\(k v i)(? k(L(d k)(
d v)(c(c(a k)(E(a v)i))i))i)))

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

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

একই অবারিত:

;; A stand alone Zozotez script need to be
;; contained in one expression, here with
;; all functions provided as arguments to
;; get them bound in the dynamic environment
((\ (E V A L)
  (E(r)'(())))
 ;; E (EVAL)
 (\ (x e)
   (? (s x)
      (V x e)
      ((\ (b j)
         (? (= b ") (a j)
         (? (= b \) x
         (? (= b ?) (? (E(a j)e) (E(a(d j))e) (E(a(d(d j)))e))
         (? (s b)
            (A b (E(a j)e) (E (a(d j))e))
            (E (a(d(d b))) (L(a(d b))j e)))))))
       (E (a x) e)(d x))))
 ;; V (VALUE / symbol->value)
 (\ (x g)
   (? g
      (? (= x (a (a g)))
         (d (a g))
         (V x (d g)))
      x))
 ;; A (APPLY) but just for primitives
 (\ (f h v)
   (? (= f r) (r)
   (? (= f p) (p h)
   (? (= f s) (s h)
   (? (= f a) (a h)
   (? (= f d) (d h)
   (? (= f =)
      (= h v)
      (c h v))))))))
 ;; L ( joint evLis / extend-env)
 (\ (k v i)
   (? k
      (L (d k) 
         (d v)
     (c (c (a k) 
           (E (a v) i)) 
        i))
      i)))

0

CHIQRSX9 + (সম্ভবত প্রতিদ্বন্দ্বিতামূলক), 2 বাইট

+I

এইচকিউ 9 + ভিত্তিক ভাষা ব্যবহার না করে স্ব-ব্যাখ্যা দোভাষী লেখার কোনও উপায় নেই Iযা STDIN- র প্রক্রিয়াজাত একটি অন্তর্নির্মিত দোভাষী চালায়।


1
নিয়মের কোথাও এটি বলা হয়নি যে অন্তর্নির্মিত স্ব-দোভাষীদের অনুমতি দেওয়া হয়নি। এতে বলা হয়েছে eval, যা কর্মসূচীর জন্য, প্রোগ্রাম নয়।
এরিক দি আউটগল্ফার

এই ভাষায় একটি গণনা প্রাইম কীভাবে করতে পারে?
পিপ্পারি

@ পিপ্পেরিকে Xভাষা বাস্তবায়ন-নির্ভর পদ্ধতিতে টিউরিং -সম্পূর্ণ (এভাবে প্রাইমগুলি গণনা করতে সক্ষম) করার কথা রয়েছে।
ব্যবহারকারী 8397947

এসোলাং পৃষ্ঠার সাথে সঙ্গতি রেখে পার্ল ইন্টারপ্রেটারের Xকমান্ড এলোমেলোভাবে প্রোগ্রামটি আঁকড়ে ধরে এটি সম্পাদন করে, যার অর্থ হ'ল কমান্ড ব্যতীত প্রাইমগুলি নির্ধারণের জন্য ব্যবহার করা যায় না। আপনি কি আমাকে এমন একটি দোভাষী দান করতে পারেন Xযা আপনাকে নির্দিষ্টভাবে ব্যবহার করতে দেয় ?
পিপ্পারি

@ পিপ্পেরি স্পষ্টতই পার্লে লিখিত দোভাষী কেবলমাত্র দোভাষী, তাই না no এছাড়াও, যদি এমন কোনও প্রোগ্রাম থাকে যা একটি নির্দিষ্ট মান দিয়ে "এলোমেলো" হয় তখন প্রাইমগুলি গণনা করে?
ব্যবহারকারী 8397947

0

একযোগে ফাইল সিস্টেম বেফঞ্জ 98 - 53 \ 18 বাইট (প্রায় অবশ্যই প্রতারণা)

কোনও বিধিনিষেধ ছাড়াই পুরো 53 বাইট দোভাষী

v ;;;;;;;;
>]390'ai@
 t;;;;;;;;
;>zzzzz#;

নামের একটি ফাইল থেকে ইনপুট পড়ে aএবং এটি সম্পাদন করে। আমরা স্ব-সংশোধনকারী কোড ব্যবহার করতে পারি না এমন নিয়মে এটি নির্দিষ্ট করা হয়নি।

18 বাইট ইন্টারলিটার যা মোড়ানোর অনুমতি দেয় না (আইপি কোডের এক প্রান্তের সরানো এবং বিপরীত প্রান্তে শুরু):

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