একাধিকবার কুইন


16

আপনার টাস্কটি এমন প্রোগ্রাম তৈরি করে যা নিম্নলিখিতগুলি করে:

  1. আপনার নম্বর নেওয়া উচিত। (ইতিবাচক, নেতিবাচক, ভগ্নাংশ সম্ভব ইনপুট)
  2. যদি এটি নেতিবাচক হয়, আপনি কাইন বিপরীত। এবং এই সংখ্যাটি উপেক্ষা করুন (ইতিবাচক হয়ে উঠুন)
  3. তারপরে আপনি আপনার উত্স প্রোগ্রাম থেকে <ইনপুট নম্বরটির পূর্ণসংখ্যার অংশ> বার পুনরায় এবং প্রথম <মেঝে (ইনপুট সংখ্যার দৈর্ঘ্যের ভগ্নাংশ)> মুদ্রণ করুন। যদি এটি পূর্ণসংখ্যা হয় তবে ভগ্নাংশের অংশটি শূন্য।

আপনার প্রোগ্রামটি প্যালিনড্রোম না হলে -10% বোনাস us

উদাহরণ

যদি আপনার প্রোগ্রামটি "ABCDEFG" হয় তবে তা

1।

5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFG

ব্যাখ্যা

এবিসিডিডিএফজি পাঁচবার

2।

-2
GFEDCBAGFEDCBA

ব্যাখ্যা

জিএফইডিসিবিএ (বিপরীত এবিসিডিইএফজি) 2 বার

3।

7.5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABC

ব্যাখ্যা

ABCDEFG times বার এর পরে এবিসি (প্রথম 3 (তল (0.5 * 7) = তল (3.5) = 3) ABCDEFG- তে চিঠি)

4।

-0.3
GF

ব্যাখ্যা

জিএফইডিসিবিএ (বিপরীত এবিসিডিডিএফজি) 0 বার তার পরে জিএফ (প্রথম ২ (মেঝে (০. * *)) = তল (২.১) = ২) জিএফইডিসিবিএর চিঠি (বিপরীত এবিসিডিডিএফজি))

5।

0
<empty>

ব্যাখ্যা:

<empty> এর অর্থ আপনার প্রোগ্রাম আউটপুট দেয় না। এটি খালি স্ট্রিং হিসাবে সংজ্ঞায়িত শূন্য বার এটিবিসিডিএফজি।


আপনি দয়া করে নির্দেশাবলী স্পষ্ট করতে পারেন?
LegionMammal978


@ লিজিওনম্যামাল ৯78৮ আমি প্রকাশ করার মতো জিনিসটি আসলেই খারাপ, তবে আমি আশা করি এটি আরও পরিষ্কার হয়ে যাবে।
আকংকা

2
@ এমবিম্ব ২০০7 আমি অনুমান করি আপনি নিজেই স্ট্রিংটি পার্স করতে পারেন এবং হ্যান্ডেল করতে পারেন -এবং .ম্যানুয়ালি (ভগ্নাংশটিকে ইতিবাচক পূর্ণসংখ্যার হিসাবে উপস্থাপন করছেন)। অথবা আপনি পরবর্তী চ্যালেঞ্জের দিকে মনোযোগ দিতে পারেন। ;) (না প্রতিটি ভাষায় যে চ্যালেঞ্জ অংশগ্রহণ করতে পারেন, কিন্তু যতদিন চ্যালেঞ্জ ইচ্ছাকৃতভাবে বাইরে নির্বিচারে পৃথক ভাষা, যে সম্পূর্ণরূপে জরিমানা নিয়ম করে না শুধু অডিও / চিত্র প্রক্রিয়াকরণ বা ফাইল সিস্টেম চ্যালেঞ্জ সব
মার্টিন বাড়ি হইতে বাহিরে

1
এটা তোলে প্রোগ্রাম যা 10% বোনাস দিতে আরো যৌক্তিক আমাদের কেমন লাগত হয় palindromes
Bassdrop Cumberwubwubwub

উত্তর:


8

সিজেএম, 28 26 বাইট * 0.9 = 23.4

2 বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ।

{`"_~"+rd_z26*,\g1|@%f=}_~

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

{`"_~"+ e# Generalised quine framework. Leaves the source code on the stack.
  rd    e# Read input and parse as double.
  _z    e# Copy and get absolute value.
  26*   e# Multiply by 26, the length of the quine to get length N of the output.
  ,     e# Get a range [0 1 ... floor(N-1)].
  \g    e# Swap with other copy and computer signum to determine direction of string.
  1|    e# This might be zero though, so take bitwise OR with 1 to avoid an error.
  @%    e# Pull up source string. Reverse it if the signum was -1 (no-op otherwise).
  f=    e# The range we pushed earlier corresponds to the (cyclic) indices of the source
        e# which make up the desired result, so we map each index to the corresponding
        e# character to get the final result.
}_~

5

ভিটসি, 34 * 0.9 = 30.6 বাইট

আমার কোডে কোনও ত্রুটি চিহ্নিত করার জন্য @ স্প3000কে ধন্যবাদ!

উ। আমার পদার্থবিজ্ঞানের শিক্ষক আমাকে মনে করিয়ে দিয়েছিলেন যে এটির জন্য আমাকে সাহায্য করার জন্য আমার পাওয়ার ফাংশন ছিল। চিত্রে যান.

'R (; Vd3 * থেকে V2 ^ 12 / ^ DvV / 1 + + (rvl1 - * \ না [{]
'স্ট্রিং হিসাবে রেকর্ডিং শুরু করুন - এটি সমস্ত কিছু দখল করে এবং স্ট্রিং হিসাবে স্ট্যাকের দিকে ঠেলে দেয়।
 স্ট্যাক ক্রম বিপরীত।
  (; উপরের আইটেমটি শূন্য হলে প্রোগ্রামটি থেকে প্রস্থান করুন।
    ভি চূড়ান্ত বৈশ্বিক চলক হিসাবে ইনপুট গ্র্যাব।
     d3 * স্ট্যাকের জন্য অক্ষরটি পুশ করুন।
        ভি 2 ^ 12 / ^ ইনপুট মানটির পরম মান পান।
               ডিভি সদৃশ এবং একটি অস্থায়ী ভেরিয়েবল সংরক্ষণ করুন।
                 ভি স্ট্যাকের জন্য বিশ্বব্যাপী পরিবর্তনশীল পুশ করুন।
                  / শীর্ষ দুটি আইটেম ভাগ করুন - এটি ইনপুটটির মেরুত্বের উপর নির্ভর করে -1 বা 1 পায়।
                   1+ (যদি এটি -1 হয়, তবে পরবর্তী নির্দেশটি করুন Otherwise নইলে, করবেন না।
                      স্ট্যাক বিপরীত
                       v স্ট্যাকের জন্য অস্থায়ী পরিবর্তনশীল টিপুন।
                        l1- * স্ট্যাক বিয়োগ 1 এর দৈর্ঘ্য দ্বারা গুণ করুন।
                            \ [] স্ট্যাক বারের শীর্ষ আইটেমটি বন্ধনীতে সবকিছু পুনরাবৃত্তি করুন।
                              ডিও an কোনও আইটেমটির সদৃশ করুন, এটিকে স্ট্যাকের বাইরে ফেলে দিন এবং আউটপুট দিন, তারপরে স্ট্যাকের মধ্যে একটি আইটেম সরান।

2

পার্ল, 104 বাইট - 10% = 93.6

perl -i-0.3 -e '$_=q{$_="\$_=q{$_};eval";$_=reverse if$^I<0;$n=abs$^I;print+($_ x$n).substr$_,0,y///c*($n-int$n)};eval'

102 বাইট + 2 বাইটের জন্য -i- 10% প্যালিনড্রোম না হওয়ার জন্য। ইনপুট আর্গুমেন্ট হিসাবে পাস -i(যেমন -0.3উপরে)।

কিভাবে এটা কাজ করে

এই সমাধানটি নিম্নলিখিত কুইনের উপর ভিত্তি করে:

$_=q{print"\$_=q{$_};eval"};eval

এটি নিম্নলিখিত হিসাবে কাজ করে। প্রথমে $_স্ট্রিংটিতে সেট করুন:

print"\$_=q{$_};eval"

পরবর্তী, কল eval, যা $_ডিফল্টরূপে কাজ করে । এটি printএকটি যুক্তি, একটি স্ট্রিং আক্ষরিক সহ কল করে:

"\$_=q{$_};eval"

যেহেতু এই স্ট্রিংটি ডাবল-কোটড, ভেরিয়েবলগুলি ইন্টারপোল্টেড। ইন্টারপোলটিংয়ের পরে $_স্ট্রিংয়ের মানটি হ'ল:

\$_=q{print"\$_=q{$_};eval"};eval

মুদ্রিত হলে, এই ফলাফলগুলি:

$_=q{print"\$_=q{$_};eval"};eval

যা নিজেই প্রোগ্রামটির উত্স কোড।

এই কুইন সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আপনি স্ট্রিংয়ের অভ্যন্তরে স্বেচ্ছাসেবক কোড এম্বেড করতে পারেন eval'ডি।


এখানে সম্পূর্ণ সমাধানের একটি ভাঙ্গন রয়েছে:

perl -i-0.3 -e'
    $_=q{                     # string to be eval'd
        $_="\$_=q{$_};eval";  # append beginning and end of quine so the
                              #  entire thing can be reversed if necessary
        $_=reverse if $^I<0;  # reverse if input < 0
        $n=abs $^I;           # set $n to absolute value of input
        print                 # print
            +($_ x $n)        # $_ repeated $n times
            .                 # concatenated with
            substr $_,        # substring of $_
                   0,         # starting at the beginning
                   y///c      # having length x, where x is length of $_
                   *          # multiplied by
                   ($n-int$n) # fractional part of $n
    };
    eval                      # eval $_
'

0

গণিত, 139 - 10% = 125.1 বাইট

StringJoin[Table[s = If[#1 > 0, #1 & , StringReverse][ToString[#0, InputForm]], {Abs[Floor[#1]]}], StringTake[s, Floor[Mod[#1, 1]*139]]] & 

পেছনের স্থানটি নোট করুন। সাদা স্থান, মানক স্বরলিপি, ইত্যাদি এর ফলাফল ToString[#0, InputForm]


0

হাস্কেল, 158 * 0.9 = 142.2 বাইট

c i|i<0=reverse|1<2=id;f i=putStr$take(floor$abs i*158)$cycle$c i$s++show s;s="c i|i<0=reverse|1<2=id;f i=putStr$take(floor$abs i*158)$cycle$c i$s++show s;s="

একটি কুইন ফাংশন।

*Main> f (-0.3)
"=s;s wohs++s$i c$elcyc$)851*i sba$roolf(ekat$r

*Main> f 1.1
c i|i<0=reverse|1<2=id;f i=putStr$take(floor$abs i*158)$cycle$c i$s++show s;s="c i|i<0=reverse|1<2=id;f i=putStr$take(floor$abs i*158)$cycle$c i$s++show s;s="c i|i<0=reverse

*Main> f 0
              <-- empty

0

পাইথন 2, 193 বাইট - 10% = 173.7

x=input();y=int(x);_='x=input();y=int(x);_=%r;_=(_%%_)[::y/abs(y)];x,y=abs(x),abs(y);_=_*y+_[:int(y*(x-y)*193)];print _';_=(_%_)[::y/abs(y)];x,y=abs(x),abs(y);_=_*y+_[:int(y*(x-y)*193)];print _

ত্রুটিগুলি চালু আছে 0, কিন্তু, এসটিডিআরআর উপেক্ষা করে আপনি এখনও খালি আউটপুট পান।


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