মস্তিষ্কে একটি ইউআরএল এনকোডিং


11

এই প্রশ্নের দ্বারা অনুপ্রাণিত , আপনার লক্ষ্য আজ ব্রেইনফাকের একটি URL এনকোড করা।

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

ওহ এবং আমার কেবলমাত্র একটি টুইটার খোলা আছে, আমার টুইটার। সুতরাং আপনি কেবল আমাকে একটি টুইটের মাধ্যমে প্রোগ্রামটি পাঠাতে পারেন।


  1. ইনপুট হিসাবে স্ট্রিং নেয় এবং একটি ব্রেনফাক প্রোগ্রাম আউটপুট করে যে কোনও ভাষায় একটি টুইট (140 অক্ষর) ফিট করে এমন একটি প্রোগ্রাম লিখুন।

  2. এই ব্রেনফাক প্রোগ্রামটি ইনপুট ছাড়াই চলবে এবং আউটপুট উত্পন্ন করবে।

  3. এই আউটপুটটি গুগল ক্রোমের লোকেশন বারে sertedোকানো হবে এবং সম্পাদন হবে।

  4. গুগল ক্রোমের আচরণ যদি # 1 থেকে ইনপুট স্ট্রিং প্রবেশ করে আপনি যে আচরণটি পান তবে তার সাথে মিলে গেলে সমাধানটি বৈধ। ইউআরএল সংক্ষিপ্তকারীদের দ্বারা পুনঃনির্দেশকে বিভিন্ন আচরণ হিসাবে বিবেচনা করা হয় - কমপক্ষে একই ডোমেনে থাকুন।

আপনি ধরে নিতে পারেন ব্রেইনফাকের দোভাষীর প্রতিটি কক্ষে অসীম নির্ভুলতা স্বাক্ষরিত পূর্ণসংখ্যা এবং সীমিত পরিমাণে কোষ রয়েছে।

আপনার স্কোর নিম্নলিখিত ইউআরএলগুলির সেটটি এনকোড করার জন্য উত্পন্ন ব্রেনফাক প্রোগ্রামগুলির দৈর্ঘ্যের সমষ্টি দ্বারা নির্ধারিত হয়:

https://www.google.com/
/codegolf/47895/
http://www.golfscript.com/golfscript/examples.html
http://en.wikipedia.org/wiki/Percent-encoding
ftp://ftp.freebsd.org/pub/FreeBSD/
https://github.com/isaacg1/pyth/blob/master/doc.txt#L92
http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README

সবচেয়ে ছোট স্কোর জয়।


আমরা কি ধরে নিতে পারি যে ইনপুটটি এভাবে ফর্ম্যাট http://www.google.com/হবে : নাকি এটি কখনও সহজ হবে google.com? (গুগল ক্রোমের সাথে সম্পর্কিত হিসাবে উভয়ই বৈধ, তবে আপনার তালিকায় কেবল সম্পূর্ণ ফর্ম রয়েছে) পিএস আমার প্রায় ক্রোমের জন্য একটি এক্সটেনশন লেখার ইচ্ছা আছে যা এটি করে ...
ব্রেইনস্টিল

2
@ ব্রেনস্টিল আপনার এনকোডারটির ইনপুটটি প্রশ্নের মতো বর্ণিত ঠিক হবে (প্রতিটি লাইনই একটি ইনপুট)। ব্রেইনফাকের আউটপুট গুগল ক্রোম দ্বারা গৃহীত কোনও ফর্ম্যাট হতে পারে, যতক্ষণ না এটির মূল ইনপুট স্ট্রিংয়ের মতো আচরণ থাকে behavior সুতরাং আপনার প্রোগ্রাম ইনপুট নেয় যদি http://www.google.com/brainfuck প্রোগ্রাম মে আউটপুট উত্পাদন করে google.com, www.google.comইত্যাদি কারণ তারা একই পৃষ্ঠায় সমস্ত ফলাফল। তবে উদাহরণস্বরূপ ftp://ftp.freebsd.org/pub/FreeBSD/একই নয় ftp.freebsd.org/pub/FreeBSD/
orlp

আহ, আপনাকে স্পষ্ট করার জন্য ধন্যবাদ! দুঃখিত, আমি এই সকালে কিছুটা ধীর আছি।
ব্রেইনস্টিল

আমি পরিষ্কার করতে চাই যে আমি ব্যর্থ হয়েছি, এবং এটি গুগল ক্রোমের ftp://ftp.freebsd.org/pub/FreeBSD/মতোই indeed ftp.freebsd.org/pub/FreeBSD/এটি আমার ইচ্ছা থেকে চ্যালেঞ্জটিকে কিছুটা সহজ করে তোলে তবে জীবন এটি। আমি প্রয়োজনীয়তাগুলি পরিবর্তন করব না, সুতরাং এটির আগে কেবল কিছু ছিনিয়ে নেওয়া নিরাপদ ://
orlp

উত্তর:


7

পাইথ - 118 বাইট, স্কোর: 154 + 567 + 597 + 620 + 530 + 875 + 1092 = 6630 6623 4653 4435

এখন গুণকটি গুণক ব্যবহার করে!

এটি উপরের দিকের তুলনায় কিছুটা ভাল হলেও এটি একটি সহজ সরল অ্যালগরিদম। আমি পাইথ ব্যবহার করার পরিকল্পনা করছিলাম, তবে বর্তমান অ্যালগরিদমের সাথে পাইথন <140 বাইট ফিট করে

=zecz"//"=z?>z4}"www."zz=z?Pzqez\/zFNzKCNJ/^K.5 1=d\+pk+holN[?*-KZd>KZ*-ZK\-+\>*dK+++++\>*Jd"[>"*Jd"<-]>"*-K*JJd)\.=ZK

এটি প্রথমে http://ব্যবহার করে split("//")এবং শেষে www.এবং এর বাইরে বের হয় /। তারপরে এটি তিনটি বিকল্প হিসাবে বিবেচনা করা হয় যেগুলির মধ্যে সেরা যা তা পরীক্ষা করতে মিনিট ফাংশনটি ব্যবহার করে:

  1. পছন্দসই সেল মানটিতে বর্তমান সেল মানটি ব্যবহার +বা -আপডেট করতে
  2. নতুন সেল এ যান এবং শুধু পূর্ণ +'র
  3. নতুন কক্ষে যান এবং বর্গক্ষেত্রের স্থির ক্ষেত্রের ন্যূনতম পরিধি থাকে বলে স্কয়ারটি (এন) * স্ক্রুট (এন) + অবশিষ্ট রেখে আপডেট করার জন্য গুণ ব্যবহার করুন। http://cydathria.com/bf/bf_ex3.html

আমি তারপর সর্বদা .প্রতিটি চর আউটপুট করতে।

নতুন কোডটির বিস্তারিত ব্যাখ্যা শীঘ্রই আসবে। আমি গল্ফিংয়ের আধিক্যযুক্ত, বিশেষত স্ট্রিপিং www.এবং শেষটি /শেষ হলেও আমি বিরক্ত হতে পারছি না কারণ আমি 20 বাইট সীমাতে আছি।

এটি ftp://ক্রোম এবং ক্রোম স্বয়ংক্রিয়ভাবে তৈরি ftp.freebsd.org/pub/FreeBSD/হওয়ায় এটি আশ্চর্যজনকভাবে ইউআরএলগুলিতে কাজ করেftp://ftp.freebsd.org/pub/FreeBSD/

আমি পরের কক্ষের মানগুলি সংরক্ষণ করার জন্য একটি অভিধান ব্যবহার করার পরিকল্পনা করছি এবং দেখছি অক্ষরটি ইতিমধ্যে কোনও ঘরে তৈরি হয়েছিল।


ব্রেইনফাক ওমনিবক্স এক্সটেনশন

সেটা ঠিক! আমি @ ব্রেইনস্টিলের মন্তব্যটি দেখার পরে, আমি জানতাম আমার এটি করা উচিত। এটি শুধুমাত্র যখন আপনি কি সমগ্র বহুউপয়োগী নিতে হয়, তাহলে bf, tab। এছাড়াও যেহেতু ওমনিবক্স এপিআই অদ্ভুত, এটি আমাকে কোডটি ওমনিবক্সে ফরোয়ার্ড করতে দেয় না, আমাকে নিজেই এটি পরিচালনা করতে হবে। তাই আমি আমার নিজের http://চেকিং করি এবং তারপরে ট্যাবের ইউআরএল সেট করি।

যেহেতু ওয়েবস্টোরটিতে আপনার এক্সটেনশনটি রাখার জন্য প্রয়োজনীয় the 5 প্রদানের মতো আমি মনে করি না, তাই আপনাকে বলছি এটি নিজেই ইনস্টল করতে হবে। কেবল এখান থেকে জিপটি ডাউনলোড করুন: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , আনজিপ করুন, ক্রোমে এক্সটেনশন পৃষ্ঠাতে যান, উপরের ডানদিকে dev মোড বিকল্প বাক্সটি ক্লিক করুন, এবং আনপ্যাকড এক্সটেনশন লোড করুন।

আশা করি আপনারা উপভোগ করবেন! :)


এটি ftp://ইউআরএলে কাজ করবে না ।
পুরক্কা কুডারী

1
@ পিটু 1998 এটাই আমি প্রথমে ভেবেছিলাম কিন্তু ক্রোম আমাকে অবাক করেছে। আপনার অ্যাড্রেস বারে ftp.freebsd.org/pub/FreeBSD/ লাগানোর চেষ্টা করুন এবং ক্রোম এটিকে এফটিপি করবে: // ftp.freebsd.org/pub/FreeBSD/
মালটিসেন

@ মালটিসেন ওফস এই অপটিমাইজেশন প্রতিরোধ করার জন্য আমি ইচ্ছাকৃতভাবে সেই URL টি অন্তর্ভুক্ত করেছি, তবে দেখে মনে হচ্ছে আমি ব্যর্থ হয়েছি। এই ইউআরএলটি প্রকৃতপক্ষে পৃথক, তবে মনে হচ্ছে ক্রোম সত্যই স্বীকৃত এবং যুক্ত করতে যথেষ্ট স্মার্ট ftp://। আচ্ছা ভালো.
orlp

4

সি, 140 134 132 138 128 139 বাইট

263 + 816 + 911 + 955 + 827 + 1355 + 1779 = 7269 6906 বাইট

আপডেট: 6 বাইট কম, নটকি ধন্যবাদ!

আবার আপডেট করুন, 128 বাইট। কোড উল্লেখযোগ্যভাবে কম পাঠযোগ্য। এটি এখন ইউআরএলও কেটে ফেলার চেষ্টা ftp://করে।

১৩৯ বাইটে তৃতীয়টি আপডেট করুন। কোডটি কিছুটা বেশি পঠনযোগ্য এবং কিছু কদর্য অপরিজ্ঞাত আচরণ থেকে মুক্তি পেয়েছে। এখন, সাইটের নামটি আগে থাকলে www., তা ছিনিয়ে নেওয়া হয়। আমি 7 কিলোমিটারের নীচে পেয়েছি, তবে আমি মনে করি আমার অবশ্যই পাইথের সাথে মাল্টেসেনের কাছে যেতে হবে। সাবাশ.

#define p putchar
a;main(int c,char**V){while(*V[1]++-47);*++V+=1;for(*V+=**V-'w'?0:4;c=**V;*V+=1,p(46))for(;c-a;a+=c>a?1:-1)p(c>a?43:45);}

কিছুটা উন্মুক্ত করা:

#define p putchar
a;
main(int c,char**V){
    while(*V[1]++-47);
    *++V+=1;
    for(*V+=**V-'w'?0:4;c=**V;*V+=1,p(46))
        for(;c-a;a+=c>a?1:-1)
            p(c>a?43:45);
}

এই কোড শুধুমাত্র ব্যবহার বি এফ মধ্যে কমান্ড লাইন থেকে একটি URL নেয় এবং ধর্মান্তরিত এটা ., -এবং +। কোডের স্ট্রিং স্ট্রিপ একটি প্রয়াস তোলে ftp://, http://, https://, এবং www.বি এফ রূপান্তর আগে। আউটপুটগুলির আউটপুটগুলির তালিকা এখানে রয়েছে:

google.com/
codegolf.stackexchange.com/questions/47895/
golfscript.com/golfscript/examples.html
en.wikipedia.org/wiki/Percent-encoding
ftp.freebsd.org/pub/FreeBSD/
github.com/isaacg1/pyth/blob/master/doc.txt#L92
ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README

কিভাবে একটি অভ্যন্তরীণ লুপ ব্যবহার সম্পর্কে: for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)কাজ করা উচিত।
নটকি

@ নটকি চিত্তাকর্ষক! ধন্যবাদ!
ব্রেইনস্টিল

"মনে রাখবেন যে আমরা যদি ধরে নিতে পারি যে কোনও URL টি http: //, https: //, বা ftp: // ব্যতীত অন্য কোনও কিছুর সাথে শুরু হয় না, তবে আমরা এই সমাধান থেকে 10 বাইট বাদ দিতে পারি" " আপনার সমাধানটি কেবলমাত্র উপরের ডেটাসেটের জন্য কাজ করতে হবে, তাই আপনি যতক্ষণ চান
ড্যাটাসেটটি

@orlp হুর! সেই সাথে 12 টি বাইট খেলতে হবে! এই চ্যালেঞ্জের জন্য আপনাকে ধন্যবাদ, এটি দুর্দান্ত মজা পেয়েছে!
ব্রেইনস্টিল

4

ব্রেনফাক, 77 বাইট, স্কোর = 31647

স্কোর হ'ল codepoint+4প্রতিটি চরিত্রের যোগফল ।

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

(EOF = 0 দিয়ে বিএফ বাস্তবায়ন ব্যবহার করে)

উদাহরণ:

input:
!bar

output:
+++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]

0

জাভাস্ক্রিপ্ট (ES6) - 137 বাইট, স্কোর - 7413

এটি কেবলমাত্র ব্যবহার ., +এবং -। আপনি এটি ফায়ারফক্স কনসোলে পরীক্ষা করতে পারেন।

B=s=>[...s.replace(/^h.+\/\//,'')].map((c,i,a)=>(v=i?c[C]()-a[i-1][C]():c[C='charCodeAt']())?'-+'[v>0|0].repeat(v>0?v:-v):'').join('.')+'.'

এটি আমার স্কোর কাউন্টার:

[
    'https://www.google.com/',
    'http://codegolf.stackexchange.com/questions/47895/',
    'http://www.golfscript.com/golfscript/examples.html',
    'http://en.wikipedia.org/wiki/Percent-encoding',
    'ftp://ftp.freebsd.org/pub/FreeBSD/',
    'https://github.com/isaacg1/pyth/blob/master/doc.txt#L92',
    'http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README'
].map(B).join('').length
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.