তাৎপর্যপূর্ণ হোয়াইটস্পেস: ডাকাত


18

এটি একটি পুলিশ এবং ডাকাতদের চ্যালেঞ্জের অংশ। পুলিশদের অংশের জন্য এখানে যান

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

ডাকাতদের চ্যালেঞ্জ

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

H e l l o,
 W o r l  d!

প্রোগ্রাম আউটপুট করা উচিত

Hello,World!

হোয়াইটস্পেস সন্নিবেশ করার পরে, দ্রবণটির বাইট গণনাটি অবশ্যই পুলিশের উত্তরে বর্ণিত বাইট গণনা অতিক্রম করতে হবে না। উপরোক্ত সীমাবদ্ধতাগুলির দ্বারা আপনার বৈধ হিসাবে যতক্ষণ না আপনার পক্ষে অভিযুক্ত পুলিশ হিসাবে ঠিক একই সমাধানটি খুঁজে পেতে হবে না।

আপনি যদি এটি পরিচালনা করেন তবে পুলিশকে দেওয়া উত্তরের সাথে সংযোগ করে সমাধানের সাথে একটি উত্তর পোস্ট করুন, এবং পুলিশকে উত্তরটি আপনার সাথে যুক্ত করে একটি মন্তব্য দিন।

যে ডাকাত সর্বাধিক পুলিশ জবাব দেয় সে জিততে পারে। ক্র্যাকড কপ জবাবগুলির আকারগুলির যোগফলগুলি বন্ধ হয় (ডাকাত যারা দীর্ঘতর জমাগুলি ক্র্যাক করে তার পক্ষে)।

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

উত্তর:




7

জাভাস্ক্রিপ্ট ES6, 199 বায়ান্ট আর্নল্ড দ্বারা

s=>eval(atob`ISYgJiAtOkI8Qk97BRBeaxZFShoUZSsiOGkMenNy`.replace(/./g,(c,i)=>String.fromCharCode(c.charCodeAt()^(k+="     S    e c  r   e t     C    o   d  e   ".split(/\w/)[i%11].length)),k=0)).join``

আমি বুঝতে পারলাম বিভাজনের "SecretCode"অর্থ আমি ১১ টি সংখ্যা খুঁজছিলাম যা সংক্ষিপ্ত হয়ে গেল (আমি ধরে নিয়েছিলাম) 33. এটি এমন একটি তারা এবং বারের সমস্যা যেখানে স্পেসের সংখ্যাটি তারা এবং অক্ষরগুলি"SecretCode" বারগুলি ছিল। আমি সেখানে কতগুলি সংশ্লেষ চেষ্টা করতে হয়েছে তা দেখার জন্য গণিতটি করেছি (1,917,334,783 সংমিশ্রণ) এবং পুরোপুরি এটি নিখরচায় জোর করার সিদ্ধান্ত নিয়েছে।

বোধহয় একটি দ্রুত উপায় এটি সম্পর্কে চলে গেছে উদাহরণস্বরূপ ঠাহর যে জন্য, kহতে হয়েছে 33এবং 66যথাক্রমে সূচক 10 এবং 21 জন্য, কিন্তু আমি অলস নই।


আরে, ভাল হয়েছে! ;-)
আর্নল্ড

2
$/**/=/[ \n]/;s['sp'+'lit']($)... ওহ, এটা নোংরা।
প্যাট্রিক রবার্টস

যদি কেউ আমার বর্বরোচিত প্রচেষ্টা সম্পর্কে কৌতূহল বোধ করে তবে এটি পেস্টবিন.com
প্যাট্রিক রবার্টস

6

সি, 475 বাইট বাই রেক্স্রোনী

#include<unistd.h>
#define a char
#define b *
#define c write
#define d stdin
#define e stdout
#define f read
#define g (
#define h )
#define i while
#define j if
#define k 0
#define l &
#define m ,
#define n =
#define o ;
#define p 1
#define gpml ml h
#define abo
#define ml d m p
#define jg d o abo
#define lb abo d
#define gf h abo c
#define jgm b e n
#define pml f g
#define gpm lb
int main(){a jg a jgm l jg i g pml k m l gpml h j g d!=' '&&gpm!='\n'gf g p m l gpml o}

আমি এই সংজ্ঞা কিছু ব্যবহার শুরু করতে পারেন :)

প্রি-প্রসেসরের পরে কোডটি এরকম কিছু দেখায়:

int main(){
    char stdin;
    char *stdout = &stdin;
    while(read(0, &stdin, 1))
        if(stdin !='' && stdin!='\n')
            write(1, &stdin, 1);
}   

কি দারুন! ভাল কাজ. এমনকি শেষ পর্যন্ত এটি পড়তে আমার সমস্যা হয়েছিল, এবং আমি এটি লিখেছিলাম।
রেক্স্রোনি

@ রেক্স্রনি #defineaboআমাকে কিছুক্ষণের জন্য ফেলে দিলেন। প্রথমে আমি ভেবেছিলাম এটি হ'ল #define ab oযা কেবল কিছু অতিরিক্ত ;গুলি যুক্ত করবে, তবে শেষের দিকে এটি কার্যকর হয়নি।
রেলি

হ্যাঁ, এটি বিশেষত আরও শক্ত করে তোলার জন্য বেছে নেওয়া হয়েছিল :)
রেক্স্রোনি

5

রুবি, 86 বাইট +1 পতাকা = 87 হিস্টোক্র্যাট দ্বারা

eval"( T $ }{(! // ; : 67 8 ? 32. && )".gsub(/ |(.)/){$1&&$&.ord.^($'.count(' ')).chr}

এটি সত্যিই মজাদার ছিল, স্ট্রিংয়ের প্রতিটি অক্ষর স্ট্রিংয়ের অবশিষ্ট স্থানগুলির সংখ্যার বিপরীতে evalঅক্ষর কোড ( ord) XORed দ্বারা প্রতিস্থাপিত হবে ^(...)। ফলাফল কোডটি হ'ল:

$_.tr!(''<<32<<10,'')

4

RprogN, দ্বারা

এটি কৌশলটি প্রদর্শিত হচ্ছে to

' ' ` R
"
" ` R

হাহাকে ক্র্যাক করার সময় আমি দুর্ঘটনাক্রমে এটি গল্ফ করেছিলাম, 14 বাইটে নেমেছি
অ্যালফি গুডাক্রে

আপনি কীভাবে গল্ফ করেছিলেন তা আমি সত্যিই কৌতুহলী।
এটাকো

@ATaco প্রোগ্রামটি মাত্র 14 বাইট। আপনি একটি পেছনের লাইনফিড বা কিছু গণনা করেছেন?
মার্টিন এন্ডার


@ATaco আমি ভুল ছিলাম, অনলাইনে সংকলকটিতে আমি নতুন লাইনগুলি পরীক্ষা করতে পারিনি, যার ফলশ্রুতিতে আমার মনে হয়েছে এটি কাজ করছে তবে আমি এলএফ
আক্ষরিককে

4

ভি, 37 বাইট, ডিজেএমসিএমহেম দ্বারা

O     VrS200@"kIi|D@"A üî|D@"

Unprintables:

O     <esc>Vr<C-a>S200<esc>@"kIi<C-v><C-v><esc>|D@"<esc>A üî<esc>|D@"

TryItOnline

üসত্যিই আমাকে একটি লুপ জন্য ছুড়ে ফেলে, আমি উভয় এটা আশা রাখা এবং îকমান্ড যাবে।

O                 # Insert 5 spaces above this line
Vr<C-a>           # Change them all to <C-a>
S200<esc>         # Replace the line with 200
@"                # Play back the 5 <C-a>'s, 200 -> 205
k                 # ????
Ii<C-v><C-v><esc> # insert "i<C-v>" so our line is now "i<C-v>205"
|D@"<esc>         # Delete the line and then run it, which inserts "Í" (ASCII 205)
A üî<esc>         # Append " üî" so our line is "Í üî"
|D@"              # Delete the line and run it

Í üîভি :%s/ \|\n//gতে ভিমে অনুবাদ করে , যা বিশ্বব্যাপী সমস্ত সাদা স্থান সরিয়ে দেয়। Íকমান্ড উইকি আছে, এবং üএবং îহয় |এবং nযথাক্রমে তাদের উচ্চ বিট সেট দিয়ে


সাবাশ! এটাই আমার সঠিক সমাধান ছিল। :)
ডিজেএমসিএমহেম

3

সি, 140 বাইট বাইসেজ দ্বারা

#include<stdio.h>
int main(){int a=getchar();while(a!=EOF){//\a=getchar();
if(a!=10&&a!=32)//\\putchar(a^10^32);
putchar(a);a=getchar();}}

(আমিও আশা করি আমি এটি সঠিকভাবে করছি)


এক মিনিটের মধ্যে আমাকে নিনজা!
ক্রিটসি লিথোস

@ ক্রিতিক্সিলিথোস সেম, জমা দেওয়ার কথা ছিল যখন এই অ্যাওয়ারটি পপ আপ হয়েছিল ^^
ডেনকার

3

এমএটিএল, লুইস মেন্ডো দ্বারা 22 বাইট

যদিও আমি নিশ্চিত হতে পারি না কেন, এটি কাজ করে বলে মনে হচ্ছে

t' @ * 'dm1e5%M
dw%Y
(

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


ভাল, +1 আমি আমার উত্তরে একটি আংশিক ব্যাখ্যা যুক্ত করেছি :)
স্টিভি গ্রিফিন

1
@ স্টেভি গ্রিফিন, ব্যাখ্যাটির জন্য ধন্যবাদ। আমি কেন এটি কাজ করে কাজ করার চেষ্টা করছিলাম, তবে এটি ধীরে ধীরে চলছিল। খুব ব্যাপক ডক্স লুইস :)
মিকিটি

1
@ মিকিটি আপনি জাভা এর মতো ভার্বোজ বোঝাচ্ছেন :- পি দুর্দান্ত ক্র্যাকিংয়ের কাজ!
লুইস মেন্ডো

3

এমএটিএল, 22 লুই লেন্ডো বাইট।

অবশেষে ... আমি ব্যাখ্যা লিখতে গিয়ে মিকিটি এটিকে ফাটল, তাই তার উত্তরটি "বৈধ"। আমি এই মেটা পোস্ট অনুসারে যাইহোক এটি পোস্ট


Mএবং Yঅপ্রয়োজনীয় এবং মন্তব্য করা হয়। এটি 5 নয়, 4 টি সাদা অক্ষরের অক্ষর যুক্ত করতে যথেষ্ট।

t' @ *'dm1e5%M
dw%Y
(

এটি আরও কমপ্যাক্টের সমতুল্য :

t' @ *'dm7dw(

আংশিক ব্যাখ্যা:

         % Implicit input
t        % Duplicate input
' @ *'   % String with ASCII-values [32   64   32   42]
d        % diff, giving [32  -32   10], 32 is space, 10 is newline
m        % ismember, checking if the character is 32 or 10
1e5      % 10000, but could just as well be 7
d        % Taking the diff of the scalar 1e5, returning an empty matrix []
w        % Swap stack in order to use ( below
(        % Equivalent to x(y)=[], where x is the input string, and y is the logical
         % vector found using ismember (m)
         % Implicit output

দুর্দান্ত ক্র্যাকিংয়ের কাজ!
লুইস মেন্ডো

2
ধন্যবাদ :) আমি শুরু করার আগে এমএটিএল সম্পর্কে কিছুই জানতাম না ... আমার ধারণা আমার ব্যাখ্যা সম্পূর্ণ সঠিক নয় (তবে মোটামুটি কাছাকাছি হওয়া উচিত?)। আমার দীর্ঘ সময় লেগেছিল, যেহেতু 1e5হয় দুটোই ছাপা হয়েছে 100000, নাকি 1eকল ছিল reshape, তবে কী ছিল 5? (আমি এখন দেখতে %লাইনের শেষ, তাই এটি হবে 5M, না একটি পাঁচ এবং Mএছাড়াও, আমি আছে ছিল। Y(সব এক লাইন সব, একটি খুব সুন্দর MATL টিউটোরিয়াল :)।
Stewie গ্রিফিন 22

ব্যাখ্যাটি পুরোপুরি সঠিক :-) হ্যাঁ, কোনও ভাষা দিয়ে শুরু করার পক্ষে এটি খুব ভাল (কেবলমাত্র কিছুটা কঠিন) উপায়
লুইস মেন্ডো

2

বেফুঞ্জ -98, 65 বাইট বাই নিনজালজ

~v       >#@
 >::':'0--\'[';--!8v1+!
*1+j  !j,v         >#@

এটি অনলাইন চেষ্টা করুন!

এটা অনেক মজার ছিল। আমি অনুমান করেছি যেহেতু কয়েকটি দিক-পরিবর্তনকারী কমান্ড রয়েছে এবং কোনও ^<[]?xবা অনুরূপ নেই, তাই এটি মোড়ানো ব্যবহার করতে হবে। আমি তখন একটি পাইথন স্ক্রিপ্ট লিখেছিলাম যার জন্য ফাঁকা স্থানটি পেতে সহায়তা করতেj

কোড ইনপুট ( ~) নেওয়ার এবং এটির দ্বিগুণ করে ( ::) ব্যবহার করে কাজ করে। এরপরে এটি 10 ​​( ':'0বা ord(':') - ord('0')) এবং 32 ( '[';বা ) বিয়োগ করেord('[') - ord(';') ) । তারপরে, দ্বিতীয় ফলাফলটি যৌক্তিকভাবে উপেক্ষিত হবে (1 যদি স্থান হয়, অন্যথায় 0 ছিল) এবং একটি 8 টি পুশ করা হয়।

এখন সেই অংশটি আসবে যা কী এড়িয়ে যাবে তা নির্ধারণের জন্য। 1+!পরের লাইনে অব্যাহত দ্বারা এড়ানো হয়েছে। #এড়িয়ে যায়@ । যৌক্তিকভাবে উপেক্ষিত ফলাফল (0 বা 1) 8 দ্বারা গুণিত হয় এবং 1 যোগ করা হয়।

কোডটি তখন অনেকগুলি (অর্থাত্ 1 বা 9) স্পেস যোগ করে এবং আইপি চলার সাথে সাথে একটি অতিরিক্ত। চরিত্রটি যদি স্থান না থাকে তবে এটি শেষ হয়! । অক্ষর কোড বিয়োগ 10 টি যৌক্তিকভাবে উপেক্ষিত হয়েছে (1 যদি নিউলাইন ছিল, অন্যথায় 0)। jতারপরে কিছুই বাদ যায় না এবং মুদ্রণ (, এড়ানো যায় ) ডাকা হয় এবং লুপটি উল্লম্বভাবে মোড়ানো দ্বারা পুনরায় শুরু হয়।

চরিত্রটি যদি একটি স্থান হয় তবে নীচের রেখাটি আবার 32, 22স্ট্যাকের নীচে হিসাবে লুপ হয় । প্রথমটি j705 স্পেসে লাফ দেয়। তারপরে লাইনটি তৃতীয়বার লুপ করে। যদি স্ট্যাকের উপরে দুটি 10 ​​এরও বেশি বাম থাকে (কোডটি কেবল সেগুলি ছেড়ে যায়), প্রথমটি j100 টি স্পেসে লাফ দেয় এবং লুপ পুনরাবৃত্তি করে। অন্যথায়, প্রথম jলাফ দেয় !, একটি শূন্য অবহেলিত হয়, দ্বিতীয়টিj প্রিন্টের উপরে লাফ দেয় এবং প্রোগ্রামটি অবিরত থাকে।

আমি এটি 59 বাইট ডাউন গল্ফ পরিচালিত।


আপনার শিরোনামে কপটির নম্বর তালিকাবদ্ধ করা ঠিক আছে (যেহেতু টাইব্রেকার বড় আকারের পুরষ্কার দেয়)।
মার্টিন এন্ডার

2

সি # 6, 201 বাইট, দুধ দ্বারা

using System.Linq;
_=>string./**/
#if trueJoin
(/*"*//*/""/**//*/"*/",
#else
Concat(//*/,
#endif
from m in" "let p=$@"{@" 
"[1]}"from i in(_.Replace(p,@""))where!new[]{p[0]^32^10}.Contains(i)select@i);

repl.it ডেমো

trueJoinসংজ্ঞায়িত করা হয় না, তাই শুধুমাত্র string.Concat()অবশেষ।
pহয় "\n"p[0]^32^10স্থান। এটির (যদি কিছু p[0]^42অন্যান্য ) সমস্যা হয় তবে এটি বা অন্যান্য অনুরূপ ধ্রুবক।


দুধগুলিতে মন্তব্য করাতে উত্তর দেওয়ার জন্য এটির প্রয়োজন # #++, যদি তারা এটি পরিবর্তন করে তবে আপনিও পারেন?
TheLethalCoder

2

রেখাকার, 43 বাইট, কনর ও ব্রায়েন দ্বারা

ISBqv<>>$$4j
E :d/v$v?
c+91d/ v?E
;!?l$/o $

এটি অনলাইন চেষ্টা করুন!

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

I               Push all the input on to the stack as a string
 S              Convert it into a character array.
  B             Turns that array into individual characters on the stack.
   q            Reverse the stack so the first letter is on top.
    v           Move down... 
    /           ...and turn left.
E :d            Duplicate the value and test if equal to space.

       v?       If it is a space we move down until we wrap to the top.
       >$$      Drop the test result and the space.
          4j    Jump over the next 4 commands (having wrapped to the start).
    v           Bringing us back to the first down arrow, ready to test the next char.

     v$         If it wasn't a space, drop the test result and move down.
c+91d/          Turn left and push a newline (char 10) on to the stack.
       v?E      If equal, we go down, following the same path as with the space.

     /          If not equal, turn down.
   l$/          Then turn left, drop the test result, and push the stack size.
;!?             If zero (the stack is empty) we terminate.
        o$      Otherwise wrap around, drop the stack size, and output the char. 
     /          Then turn down wrapping around to the top of the program.
    v<          Then turn left and down to start the process from the beginning again.

গিথুব উইকিতে ডক্স রয়েছে।
কনর ও'ব্রায়েন

ভাল ধারণা! এবং চিত্তাকর্ষক যে আপনি উইকি ছাড়াই এটি করেছেন: ডি
কনর ও'ব্রায়েন

1

সি #, 159 বাইট লেথাল কোডার দ্বারা

using System.Linq;s=>string.Join("",string.Join("",s.Split(@" 
".Replace(new string((char)0x0D,1),"").ToCharArray())).Select(c=>c+""!=""?c+"":"").ToArray());

repl.it

লাইন 1 এর শেষে স্ট্রিংটি হ'ল " \n"(স্পেস + নিউলাইন)।

/*Func<string, string> Lambda =*/ s =>
    string.Join("",                                                           // No-op
    string.Join("",                                                           // Join (without whitespace)
        s.Split(@" \n".Replace(new string((char)0x0D,1),"").ToCharArray())    // Split on whitespace
    ).Select(c=>c+""!=""?c+"":"").ToArray());                                 // No-op

1

Minkolang v0.15, 88 বাইট Kritixi Lithos দ্বারা

$oI[dd" "=$r'10'=1J,? 1R]r$O3.14
$$$
Cdollars             >
$$$
Ceverywhere           >x

ব্যাখ্যা

                               # Layer 1
$o                             # input chars onto stack
  I                            # stack length pushed to stack
   [                    ]      # loop popped TOS times (length of string)
    dd                         # duplicate, duplicate
      " "                      # push space to stack
         =                     # equality check
          $r                   # swap
            '10'               # number 10 to stack (LF char)
                =              # equality
                 1J            # or
                   ,           # not
                    ?          # if true jump next
                               # drop to layer 2
                      1R       # rotates the stack 1 time
                         r     # reverse the stack
                          $O   # output the stack
                             . # stop
$$$                            # Layer 2
                     >         # shift right and then drop to layer 3
$$$                            # Layer 3
                      >x       # shift right, pop char off stack and drop to Layer 1 (end loop)

এটি ক্র্যাকিং ভাল কাজ! আমি আশা করছিলাম যে সমস্ত Cবাক্যগুলি বিভ্রান্তিকর হবে তবে তবুও দুর্দান্ত কাজ!
কৃতিমিক লিথোস

@ ক্রিতিক্সিলিথোস সত্যি বলতে আমি একবার স্তরগুলি বিভক্ত করে বুঝতে পেরেছিলাম যে বেশিরভাগ কাজ উপরের স্তরে কাজ করা হয়েছে, এটি আরও সহজ হয়ে গেছে। ভাষাটি এটি করার বিষয়ে আমি কিছুটা শিখেছি, তাই ধন্যবাদ :)
মিকিটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.