"বিনামূল্যে সাদা স্থান" ব্যবহার করুন


20

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

উদাহরণ

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

s = ' '
for c in '<lots of whitespace>'.split(s):
    s+=chr(len(c))
exec s

এনকোডিং হ'ল একটি স্ক্রিপ্ট নেওয়া, একটি নতুন লাইন তৈরি করা এবং cস্ক্রিপ্টের প্রতিটি অক্ষরের জন্য আউটপুট ord(c)ট্যাবগুলির পরে একটি স্থান থাকে। আমি পাইথনটি ব্যবহার করছি এবং sএকটি স্পেস দিয়ে স্ক্রিপ্ট শুরু করব বলে একটি নতুন লাইন প্রস্তুত করা জরুরি ।

স্কোরিং

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

সাদা স্থান (ভাষা) নিষিদ্ধ

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

উত্তর:


8

গল্ফস্ক্রিপ্ট, 12 টি অক্ষর

স্ট্রিম দ্বারা সীমিত 'এই 10 টি অক্ষরের আগে চলে:

n/{,}%''+~

প্রতিটি লাইন একটি অক্ষরে ডিকোড করা হয়, যার ASCII (সম্ভবত ইউনিকোড, আসলে) মান লাইনের দৈর্ঘ্য।

দুর্ভাগ্যক্রমে আমি যদি আমার হ্যালো ওয়ার্ল্ড উদাহরণটি আটকানোর চেষ্টা করি, মার্কডাউন অতিরিক্ত স্থানগুলি এমনকি একটি ব্লকেও সরিয়ে দেয় <pre>


2
যেহেতু কোনও প্রোগ্রামের শুরুতে হোয়াইটস্পেস সর্বদা অ-কার্যকরী হয়, .n/{,}%+~তেমনি কাজ করবে।
ডেনিস

9

সিপিএএন, 16

use Acme::Bleach;

সিপিএএন সব আছে। বা কমপক্ষে, ঠিক ডান মডিউল।


আমি এই বিষয়ে প্রতারণা বলি, এটি অপারেটরগুলির একটি সম্পূর্ণ সেট যা শ্বেত স্পেস ছাড়া কিছুই নয়
র‌্যাচেট ফ্রিক

5
এটি কোনও প্রতারণা নয়। এটি সস্তা, তবে গ্রহণযোগ্য।
বুথবি

1
এই প্রোগ্রাম কিছুই করে না। ডাব্লুএস এর কেউ নেই। BOOOOOO !!!! দয়া করে এমন কোনও প্রোগ্রামের সাথে এটি পুনরায় পোস্ট করুন যা এখানে দরকারী কিছু করে। অ্যাকমে :: ব্লিচ ব্যবহার রাখুন, তবে এটির সুবিধা নিন।
থমাস এডিং

1
@ ত্রিনিথিস: যেমন এখানে উপস্থাপিত অন্যান্য প্রোগ্রামগুলির মতো কোনওটিই করে না। কেন এই এক বিশেষভাবে বাছাই?
জেবি

আমি এটি লক্ষ্য করেছি এবং এটি এটির মতো একটি হিসাবে দাঁড়ায়, এটি দেখতে কেবল এটি আমদানি করে।
টমাস এডিং

3

পার্ল, 29

$_="";s/     */chr length $&/ge;eval

এর ভিতরে s///একটি ট্যাব থাকে তারপরে একটি স্থান। এনকোডিং হল শূন্যস্থানগুলির সাথে একটি অতি-বেসিক এনকোড, ট্যাবগুলির পূর্বে।

কমান্ড লাইনে এটি ব্যবহার করে দেখুন:

$ tr ST ' \t' <<< '$_="TSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"; s/TS*/chr length $&/ge; eval' | perl

সম্পাদনা করুন: ভাল, হ্যাঁ, আমি ট্যাব / স্থানের মিশ্রণটি অনুলিপি করার কোনও সঠিক উপায় খুঁজে পাচ্ছি না। বিশ্বাস করুন, এটি ঘরে কাজ করে :) আপডেট: সেখানে, সাথে এনকোডযুক্তtr


আপনি এতে ট্যাব রাখতে পারেন \tএবং আমরা বিশ্বাস করব যে এটি সাদা
স্থানের

@ বুথবাই: ওহ, এর চেয়ে ভাল, আমার কাছে থাকতে পারে \t শেল দ্বারা ব্যাখ্যা এবং বাস্তবে জঘন্য কাজটি প্রদর্শনী হিসাবে কাজ করতে পারি। কয়েক ঘন্টার মধ্যে এটি করছেন।
জেবি

3

জাভাস্ক্রিপ্ট

\tপোস্ট করা চরিত্রের গণনা পেতে একটি ট্যাব দিয়ে প্রতিস্থাপন করুন ।

স্ট্যান্ডার্ড (characters৪ টি অক্ষর)

eval(eval("'<code here>'".replace(/\t */g,function(s){return"\\"+s.length})))

তীর ফাংশন (49 টি অক্ষর)

eval(eval("'<code here>'".replace(/\t */g,(s)=>"\\"+s.length)))

উভয়ের জন্য এনকোডার প্রোগ্রাম

for(var i = 0, si = prompt("Enter the code."), so = ""; i < si.length; ++i) so += '\t' + Array(+si.charCodeAt(i).toString(8)).join(' '); prompt("Here is the result.", so);

দুটি বাইট সংরক্ষণ (s)=>...করতে তীর ফাংশনটি প্রতিস্থাপন করুনs=>...
অ্যান্ড্রুআর্চি

যে কোনও দুটি চরের মধ্যে ফাঁকা রাখুন এবং জাসফাককে খারাপভাবে ব্যবহার করার জন্য ব্যবহার করুন (এবং " t " [ 1 ]"টি" বোঝাতে আরও ভাল ব্যবহার করুন )
l4m2

44 বিeval("".replace(/ +/g,s=>' []+!()'[s.length]))
l4m2

2

ইয়াবাসিক (88 টি অক্ষর)

a$ = "<code here>"
for a = 1 to len(a$)
    if mid$(a$, a) < " " then b = b + 1
    else b$ = b$ + chr$(b) : b = 0
    endif
next
compile(b$)
a()

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

sub a():?"hello, world":end sub

2

সি (99 টি অক্ষর)

main(c, p)
{
    char *s = "<code here>";
    for (p = popen("cc -xc -oa -", "w"); *s;)
        *s++ - 9 ? c -= putc(c, p) : ++c;
    execl("a", pclose(p));
}

কেবলমাত্র জিসিসির সাথে পরীক্ষিত (এবং সম্ভবত কেবল এটির সাথে কাজ করে)।

সংশ্লিষ্ট এনকোডার প্রোগ্রাম (ম্যানুয়ালি তার অক্ষরটি প্রথম অক্ষরটি সরিয়ে ফেলুন):

#include <stdio.h>

int main()
{
    int c;
    while ((c = getchar()) != EOF) {
        while (c--) putchar(9);
        putchar(32);
    }
    return 0;
}

1

ডি (101 টি অক্ষর)

import std.algorithm;mixin((){char[]r;foreach(c;splitter("<lots of whitspace>"," "))r~=cast(char)c.length;return r;}());

প্রশ্নের মতোই এনকোডিং (নতুন লাইনের প্রয়োজন নেই)


2
এর মুল বক্তব্য হ'ল হোয়াইটস্পেস বিনামূল্যে is আমি 98 টি চরিত্র গণনা করি। পঠনযোগ্য কোড লিখতে নির্দ্বিধায়!
বুথবি

1

বাশ (কেবল বিল্টিনস, 44 টি অক্ষর)

IFS=
eval `while read a
do printf '\'${#a}
done<<a
<code here>
a`

সংশ্লিষ্ট এনকোডার স্ক্রিপ্ট:

od -b | cut -b9- | tr ' ' '\n' | while read a
do
    for (( b = 0; b < $((10#$a)); ++b ))
    do
        echo -n ' '
    done
    echo
done

খুব সুন্দর. আমি নিজেকে কিছুটা ব্যাশ হ্যাকার হিসাবে বিবেচনা করি এবং manএটাকে ছাঁটাইতে আমাকে কিছুটা আপ করতে হয়েছিল।
বুথবি

1

কে 5, 12 বাইট

.`c$-':&9=" "

সম্পাদন করুন ( .) স্ট্রিং ASCII মান (থেকে গঠিত `c$) প্রতিটি জোড়া (মধ্যে পার্থক্য কর্তৃক প্রদত্ত -':) সূচকের যেখানে (এর &) ইনপুট একটি ট্যাব আছে (9=" " )।

ইনপুটটি ট্যাব এবং নন-ট্যাব অক্ষরের একটি স্ট্রিং এবং অক্ষরের মানগুলি প্রতিটি ট্যাবের মধ্যে নন-ট্যাবগুলির (স্পেস বা নিউলাইন) সংখ্যায় এনকোড থাকে। উদাহরণ এনকোডার:

" ",/{(x#" "),"\t"}'-1+

কোনও ফাঁকা ( " ",/) x স্পেস ( x#" ") দিয়ে একটি ট্যাব ( ,"\t") এর সাথে যোগ দিয়ে একটি চলমান যোগদান শুরু করুন যেখানে এক্স প্রতিটি ( {...}') এক ইনপুট স্ট্রিংয়ের অক্ষরের মানকে (-1+ ) হবে।

পদক্ষেপে:

  enc: " ",/{(x#" "),"\t"}'-1+
  dec: .`c$-':&9=

  enc "2+3"
"                                                  \t                                          \t                                                  \t"
  dec enc "2+3"
5

0

রুবি, 43

খুব সোজা, এনকোডিং প্রতি লাইনে x স্পেস রেখে দিচ্ছে, যেখানে x চরের আসকি মান, ডিকোডিং বিপরীত।

নিম্নলিখিত স্ক্রিপ্টটি ASCII রূপান্তরকারীটির কাছে কেবল অবিচ্ছিন্ন এবং স্পেস ব্যতীত অন্য জিনিসগুলি বিনামূল্যে থাকা সত্ত্বেও কাজ করে:

eval("".split("\n").map{|x|x.length.chr}.join)

আপনাকে খুশি যে প্রোগ্রামটি দিয়ে খালি স্ট্রিংটি প্রতিস্থাপন করুন।

আরও পুনরায় ব্যবহারযোগ্য ফর্ম্যাটে জিনিসটি:

from_space = lambda {|text| text.split("\n").map{|x| x.length.chr}.join}
to_space = lambda {|text| text.chars.map{|x| " " * x.ord}.join("\n")}

p from_space [ to_space [ "abc" ] ] #=> "abc"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.