এলিস , 16 বাইট
//; 'q<)e
o!@i -
এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা
এটির জন্য একটি অর্ধ-শালীন লেআউট সন্ধান করা বেশ জটিল। স্পেস, <
ও এবং এর কারণে আমি এখনও এতে খুব বেশি খুশি নই ;
, তবে আপাতত আমি এটিই করতে পারি সেরা।
স্ট্রিংয়ের দৈর্ঘ্য হ'ল এলিসের মধ্যে বিদ্যমান না এমন সাধারণ বিল্ট-ইনগুলির মধ্যে একটি, কারণ এর ইনপুটটি একটি স্ট্রিং এবং এর আউটপুট একটি পূর্ণসংখ্যা (এবং সমস্ত এলিস কমান্ডগুলি পূর্ণসংখ্যার সাথে স্ট্রিং বা স্ট্রিংয়ের সাথে স্ট্রিংগুলিতে কঠোরভাবে পূর্ণসংখ্যা হয়)। আমরা কোনও স্ট্রিংয়ের দৈর্ঘ্যটি টেপটিতে অর্ডিনাল মোডে লিখে এবং তারপরে কার্ডিনাল মোডে খুঁজে বের করে মাপতে পারি।
/ Reflect to SE. Switch to Ordinal. While in Ordinal mode, the IP will bounce
diagonally up and down through the code.
! Store an implicit empty string on the tape, does nothing.
; Discard an implicit empty string, does nothing.
i Read all input as a string.
'- Push "-".
< Set the horizontal component of the IP's direction to west, so we're bouncing
back now.
- Remove substring. This deletes the minus sign if it exists.
'i Push "i".
; Discard it again.
! Store the input, minus a potential minus sign, on the tape.
/ Reflect to W. Switch to Cardinal. The IP immediately wraps to the
last column.
e) Search the tape to the right for a -1, which will be found at the end
of the string we stored there.
< Does nothing.
q Push the tape head's position, which is equal to the string length.
'<sp> Push " ".
; Discard it again.
/ Reflect to NW. Switch to Ordinal. The IP immediately bounces off
the top boundary to move SW instead.
o Implicitly convert the string length to a string and print it.
IP bounces off the bottom left corner, moves back NE.
/ Reflect to S. Switch to Cardinal.
! Store an implicit 0 on the tape, irrelevant.
The IP wraps back to the first line.
/ Reflect to NE. Switch to Ordinal. The IP immediately bounces off
the top boundary to move SE instead.
@ Terminate the program.
আমি কার্ডিনাল মোডে H
(পরম মান) দিয়ে বিয়োগ সাইনকেও যত্ন নেওয়ার চেষ্টা করেছি , তবে অতিরিক্ত মোড স্যুইচটি সর্বদা আমার প্রচেষ্টায় আরও ব্যয়বহুল হয়ে যায়।