কোডগল্ফ অবজেক্ট


14

এটি কল্পনা করুন, আমাদের এমন একটি পরিবেশ রয়েছে যার একটি বৈশ্বিক সুযোগ রয়েছে যার মধ্যে রয়েছে কেবল একটি একক অবজেক্ট, যার নাম রয়েছে codegolf। এই অবজেক্টটির একটি একক শিশু রয়েছে stackexchange, যার একটি সম্পত্তি আছে com
এই সম্পত্তি অ্যাক্সেস মত দেখতে হবে codegolf.stackexchange.com

চ্যালেঞ্জ

আপনার প্রোগ্রাম / ফাংশনের ইনপুটটি বিশ্বব্যাপী সুযোগে কোনও সম্পত্তি অ্যাক্সেস করার চেষ্টা করা একটি স্ট্রিং হবে। এই সম্পত্তিটি যখনই পাওয়া যায়, আপনি সত্যবাদী মানটি মুদ্রণ / ফিরিয়ে দিতে পারবেন। সম্পত্তিটি পাওয়া না গেলে, একটি মিথ্যা মানটি মুদ্রিত / ফিরে আসবে। ক্যাপচার: আপনি যখন অ অস্তিত্বশীল কোনও জিনিসে কোনও সম্পত্তি অ্যাক্সেস করার চেষ্টা করবেন তখন আপনার প্রোগ্রামটি কোনও ধরণের ত্রুটি ছুঁড়ে ফেলবে ¹

কিছুটা সহজ করার জন্য, আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা থাকবে [a-z.], এটি কখনই খালি থাকবে না, এটি কখনও পুনরাবৃত্তি .করবে না এবং এটি কখনই একটি দিয়ে শুরু বা শেষ হবে না .। সুতরাং codegolf.একটি অবৈধ ইনপুট।

পরীক্ষার মামলা

codegolf.stackexchange.com => 1 // or any other truthy value
codegolf.stackexchange.net => 0 // or any other falsy value
codegolf.stackexchange => 1
codegolf.foo => 0
codegolf => 1
foo => 0
codegolf.com => 0
codegolf.constructor => 0

codegolf.foo.bar => Error (since foo is undefined)
codegolf.stackexchange.com.foo => Error (since com is a value, not an object)
codegolf.stackexchange.com.foo.bar => Error
foo.stackexchange.com => Error
foo.bar => Error
foo.bar.baz => Error

এটি , বাইট জেতে সংক্ষিপ্ততম কোড

¹ করেন (এবং কেবল যদি) আপনার পছন্দের ভাষা ত্রুটি সমর্থন করে না সব সময়ে , আপনি আউটপুট কিছু যা এটা পরিষ্কার যে এটি কোন ত্রুটি তোলে হবে। উদাহরণস্বরূপ, আপনি যদি সত্যের জন্য 1 এবং মিথ্যা ব্যবহারকারীর জন্য 0 ব্যবহার করেন তবে আপনি একটি ত্রুটির জন্য "ই" ব্যবহার করতে পারেন। আপনার ফেরতের মানগুলিতে সামঞ্জস্য বজায় রাখুন এবং আপনার পোস্টে আচরণটি ব্যাখ্যা করুন।


1
আমার মনে হয় foo => Errorআরও উপযুক্ত হবে।
ম্যাজিক অক্টোপাস আরন

টাইপ চেকগুলি codegolf.comবাতিল করার জন্য পরীক্ষার codegolf(.stackexchange)?(.com)?$
কেসগুলিতে

আর একটি অনুপস্থিত পরীক্ষার কেস:foo.stackexchange.com
জেমি

নিবন্ধন করুন জাভাস্ক্রিপ্ট সম্পর্কে চিন্তা করুন। fooফিরে আসবে undefined, তবে এটি কোনও ত্রুটি ছুঁড়ে ফেলবে না। সংজ্ঞায়িত না foo.barহওয়ায় একটি ত্রুটি নিক্ষেপ করবে foo
mbomb007

1
@ কারাসোকম্পুটিং সত্য, তবে আপনি এটি "আরও উপযুক্ত" বলতে পারবেন না, যখন এটি উভয় উপায়ে বোঝায়। codegolf.foo => 0তাই foo => 0
mbomb007

উত্তর:


8

জাভাস্ক্রিপ্ট, 135 বাইট

v=>(c=(p,i)=>new Proxy({}, {get:(o,q)=>(r=q==p[i]?c(p,i+1):o.$,i==3?r||z:r)}),x=c(["codegolf","stackexchange","com"],0),!!eval("x."+v))

বিল্টিন কীগুলি অ্যাক্সেসযোগ্য হওয়া রোধের প্রথম প্রয়াসটিকে পুনরায় কাজ করেছিল, এই মুহুর্তে এটি একটি ভিন্ন পদ্ধতির ব্যবহার করা আরও ভাল হবে, তবে ওহে!

বৈধের জন্য সত্য, নিখোঁজ হওয়ার জন্য মিথ্যা এবং ত্রুটিতে ত্রুটি ঘটায়।


4

জাভাস্ক্রিপ্ট (ES6), 87 বাইট

রিটার্নস false/ trueবা ছোঁড়ার ReferenceError

s=>s.split`.`.map((w,i)=>e|['codegolf','stackexchange','com'][i]!=w&&e++,e=0)&&e>1?X:!e

সম্ভাব্য সংস্করণ, by 78 বাইট (প্রতিদ্বন্দ্বী)

যেহেতু সমস্ত সম্পত্তি মিলে যাওয়ার গ্যারান্টিযুক্ত [a-z], আমরা এটি চেষ্টা করে দেখতে পারি:

s=>s.split`.`.map((w,i)=>e|[162,6,2][i]-parseInt(w,36)%587&&e++,e=0)&&e>1?X:!e

এ ছাড়াও যে থেকে 587শব্দ আমরা আগ্রহী জন্য বরং ছোট মান একটি মৌলিক এবং বিশালাকার, এই বরং একটি র্যান্ডম মডিউল পছন্দ।

যদিও এটি সমস্ত পরীক্ষার কেস পাস করে তবে অবশ্যই এটি মিথ্যা-ইতিবাচক প্রত্যাবর্তনের সম্ভাবনা।


3

ব্যাচ, 269 231 বাইট

@echo off
set/ps=
set w=1codegolf
for %%a in (%s:.= %)do call:l %%w
echo %w:~0,1%
exit/b
:g
if
:l
if %w:~-1%==. goto g
if not %1==%w% set w=0.&exit/b
set w=1com
if %1==com set w=1.
if %1==codegolf set w=1stackexchange

STDIN এ ইনপুট নেয়; একটি অবৈধ সম্পত্তি জন্য একটি সিনট্যাক্স ত্রুটি নিক্ষেপ। wস্টেট মেশিন হিসাবে ব্যবহার করে কাজ করে । যদি wএটির সাথে শেষ হয় এর .অর্থ হ'ল পরবর্তী সম্পত্তির অ্যাক্সেস অবৈধ। সম্পাদনা করুন: ব্যাচ স্ক্রিপ্টটি বাতিল করতে সিনট্যাক্স ত্রুটিটি ব্যবহার করে 17 বাইট সংরক্ষণ করা হয়েছে। আমার এক কাজ নিঃশর্ত হতে পারে তা বুঝতে পেরে 21 বাইট সংরক্ষণ করা হয়েছে।


2

জাভাস্ক্রিপ্ট, 84 82 বাইট

জয়ের পক্ষে যথেষ্ট সংক্ষিপ্ত নয়, তবে যেহেতু আমি একজন শিক্ষানবিস আমি ভেবেছিলাম এটি ভাগ করে নেওয়া মজাদার হবে। কারও কাছে উন্নতির জন্য পরামর্শ রয়েছে।

s=>s.split`.`.length>3&&e||!!eval('codegolf={stackexchange:{com:true}};window.'+s)

এটি প্রশ্নের সমস্ত পরীক্ষায় উত্তীর্ণ trueহয়, বিদ্যমান মানের জন্য ফিরে আসে falseনা , অস্তিত্বের জন্য এবং যদি আপনি অস্তিত্বহীন বা অ-অবজেক্ট ভেরিয়েবলের সম্পত্তি পাওয়ার চেষ্টা করেন তবে এটি একটি ত্রুটি ছুঁড়ে দেয়। তবে আমি এখন বুঝতে পারি যে এই সমাধানটিরও কিছু সমস্যা রয়েছে। মন্তব্যগুলিতে @ ফ্লোরেন্ট দ্বারা চিহ্নিত হিসাবে এটি স্ট্রিং প্রোটোটাইপ বৈশিষ্ট্য যেমন .toStringডাকা হয় তখন এটি সত্য হয়।

সম্পাদনা : @ মামাফুনরলকে 2 বাইট সংক্ষিপ্ত ধন্যবাদ

পরীক্ষার স্নিপেট:

var f =
s=>s.split`.`.length>3&&e||!!eval('codegolf={stackexchange:{com:true}};window.'+s)

console.log(f('codegolf.stackexchange.com')) //true
console.log(f('codegolf.stackexchange.net')) //false
console.log(f('codegolf.stackexchange')) //true
console.log(f('codegolf.foo')) //false
console.log(f('codegolf')) //true
console.log(f('foo')) //false
console.log(f('codegolf.com')) //false

console.log(f('codegolf.foo.bar')) // TypeError
console.log(f('codegolf.stackexchange.com.foo')) //ReferenceError
console.log(f('codegolf.stackexchange.com.foo.bar')) //ReferenceError
console.log(f('foo.stackexchange.com')) // TypeError
console.log(f('foo.bar')) // TypeError
console.log(f('foo.bar.baz')) // TypeError


message "বার্তা": " অপরিজ্ঞাত বা নাল রেফারেন্সের সম্পত্তি 'বার' পেতে অক্ষম", "ফাইলের নাম": " stacksnippets.net/js ", "লিনেনো": 1, "কলনো": 37}
রোজলুপি

@ রোসলুপি এই মন্তব্যটির দ্বারা আপনি কী বোঝাতে চাইছেন তা আমি নিশ্চিত নই। ফাংশন জন্য একটি ত্রুটি নিক্ষেপ অনুমিত হয়codegolf.foo.bar
tjespe

আপনার সকলের চেয়ে সব ঠিক আছে ... তবে আমার জন্য "ছোঁড়া" ত্রুটি একটি ত্রুটি
রোজলুপ

1
.split('.')-> split`.`স্বাগতম!
মামা ফান রোল

1
কাজ করে না. f("codegolf.toString") ফিরে আসা উচিত falsef("codegolf.toString.toString")নিক্ষেপ করা উচিত
ফ্লোরেন্ট

1

জাভাস্ক্রিপ্ট, 173 বাইট

function d(a){var b="codegolf",u="stackexchange",c=a.split("."),e="e";return c.length==1?c[0]==b:c.length==2?c[0]==b?c[1]==u:e:c.length==3?c[0]==b?c[1]==u?c[2]=="com":e:e:e}

আইই 10 নিয়ে কাজ করে, তাই বড় আধুনিক ব্রাউজারগুলিতে কাজ করা উচিত।

এটি এখানে চেষ্টা করুন (+ অবরুদ্ধ)


2
আরও গল্ফ হতে পারে: d=(a,b="codegolf",u="stackexchange",c=a.split`.`,e="e")=>c[l="length"]==1?c[0]==b:c[l]==2?c[0]==b?c[1]==u:e:c[l]==3?c[0]==b?c[1]==u?c[2]=="com":e:e:e(149 বাইট)
ফ্লোরেন্ট

@ ফ্লোরেন্ট আমার মনে হয় তিনি এটি IE10 ইত্যাদিতে কাজ করার অনুমতি দেওয়ার চেষ্টা করছেন তাই কোনও তীর ফাংশন বা ডিফল্ট পরামিতি নেই।
কনর ও'ব্রায়েন

একটি মহান উত্তর, জন্য +1 জন্য +1 e="e"কিন্তু -1 ইন্টারনেট 10. জন্য
NoOneIsHere

1

সি #, 155 বাইট

সংক্ষিপ্ততম হতে যাচ্ছিল না তবে ভেবেছিলেন এটি মজাদার হবে এটি সি # তে একবার যেতে ...

bool f(string s){var a=s.Split('.');int e=0,l=a.Length-1,i=l;for(;0<=i;i--){e+=a[i]!=new[]{"codegolf","stackexchange","com"}[i]?i<l?s[-1]:1:0;}return e<1;}
  • স্ট্রিং বিভক্ত এবং ফলাফল মাধ্যমে পুনরাবৃত্তি পুনরাবৃত্তি।
  • 1 টি পুনরাবৃত্তির চেয়ে গভীর একটি মিল না পাওয়া উপাদান, ত্রুটিগুলি ( IndexOutOfRangeExceptionস্ট্রিং -1 অবস্থানে একটি চর অ্যাক্সেস করে একটি নিক্ষেপ করা )।
  • অন্যথায়, কোনও উপাদান মেলে না হলে মিথ্যা ফিরিয়ে দেয়।

.NET ফিডল



1

সি, 98 112 113 বাইট

f(char*a){char*c="codegolf.stackexchage.com";while(*c&&*c==*a)++a,++c;return strchr(a,46)?*(a=0):!(*a|*c&*c-46);}

ungolfed

f(char*a){char*c="codegolf.stackexchage.com";
          while(*c&&*c==*a)++a,++c;
          return strchr(a,46)?*(a=0):!(*a|*c&*c-46);
         }

f(codegolf.stackexchage.com)=1
f(codegolf.stackexchage.net)=0
f(codegolf.stackexchage)=1
f(codegolf.foo)=0
f(codegolf)=1
f(foo)=0

নীচের জন্য এটি ত্রুটি seg আছে

f(codegolf.stackexchage.com.foo)
f(foo.bar)
f(foo.bar.baz)
f(codegolf.foo.bar)
f(foo.v)

ত্রুটি (গুলি) সম্পর্কে কী? উদাহরণস্বরূপ, f(codegolf.stackexchage.com.foo)ত্রুটি হওয়া উচিত, ফিরে আসবে না 0
জোনাথন অ্যালান

সি #, জাভা, জাভাস্ক্রিপ্ট, পাইথন, বাথক, জাভাস্ক্রিপ্টের চেয়ে কম অক্ষরের আমার সি ভাষার এন্ট্রি কেন সবার চেয়ে কম পয়েন্ট (-1) রয়েছে
রোজলুপি

আপনি কোডগল্ফ.স্ট্যাকেক্সেঞ্জ.কম.ফু ত্রুটিটি ঠিক করার আগে তারা কমে গেছে বা তারা বুঝতে পারে না যে আপনি এটি ঠিক করেছেন। # C, <strike>98</strike> 112 bytes #আপনি এটি সংশোধিত করেছেন তা পরিষ্কার করার জন্য শিরোনাম সম্পাদনা করুন ।
রায়

3হয় ত্রুটিও নয়, সি তে এটিই "সত্যবাদী" মান হিসাবে বিবেচিত হয়। দেখুন এই মেটা পোস্ট , এবং এই কোড
জোনাথন অ্যালান

ত্রুটি প্রোগ্রামের রিটার্নের ক্ষেত্রে আমি ব্যতিক্রমগুলি ব্যবহার করি না 3.. -১ হওয়া উচিত তবে ৩ টি অক্ষর সংরক্ষণ করা উচিত
RosLuP

0

জাভা, 187 138 বাইট

সংস্করণ ২.০ ( ১৩৮ বাইট): @ জ্যামি থেকে নির্লজ্জভাবে আইডিয়া চুরি হয়েছে।

l->{for(String []a=l.split,int l=i=a.length-1,e=0;i>=0;e+=a[i]!=new String[]{"codegolf","stackexchange","com"}[i]?i<l?s[-1]:1:0)return e;}

সংস্করণ 1.0 ( 187 বাইট):

l->{String[]a=l.split(".");return a[0].equals("codegolf")?(a.length<2?1:(a[1].equals("stackexchange")?(a.length<3?1:(a[2].equals("com")?1:0)):(a.length<3?0:a[-1]))):(a.length<2?0:a[-1]);}

ফেরতের অংশের ব্যাখ্যা:

return a[0].equals("codegolf")?(a.length<2?1:(a[1].equals("stackexchange")?(a.length<3?1:(a[2].equals("com")?1:0)):(a.length<3?0:a[-1]))):(a.length<2?0:a[-1]);
return                                                                                                                                                        ;
       a[0].equals("codegolf")?                                                                                                          :
                               (a.length<2? :                                                                                           ) (a.length<2? :     )
                                           1 (a[1].equals("stackexchange")?                                       :                    )              0 a[-1]
                                                                           (a.length<3? :                        ) (a.length<3? :     )
                                                                                       1 (a[2].equals("com")? : )              0 a[-1]
                                                                                                             1 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.