জাভাস্ক্রিপ্ট: 1 এর 10x10 অ্যারে তৈরি করুন


18

স্পষ্টতই এই চ্যালেঞ্জটি পৃথক ফাংশন এবং গ্রন্থাগারগুলির সাথে তুচ্ছ হবে, সুতরাং তাদের অনুমোদিত নয়।

আপনার কোডটি অবশ্যই একটি ইসিএমএসক্রিপ্টের নির্দিষ্টকরণের সাথে মেনে চলতে হবে (কোনও স্পেকটিই করবে), তাই কোনও ব্রাউজার-নির্দিষ্ট উত্তর নেই।

অ্যারেটি ইনস্ট্যান্ট হওয়ার পরে অবশ্যই অ্যাক্সেসযোগ্য।

আমার কাছে একটি উত্তর আছে যা আমি আপাতত আটকে রাখছি।

দ্রষ্টব্য: এই চ্যালেঞ্জটি জাভাস্ক্রিপ্টের জন্য সুনির্দিষ্ট কারণ জাভাস্ক্রিপ্টে বহুমাত্রিক অ্যারে তৈরি করা কুখ্যাতভাবে অসুবিধাজনক নয়।


আমি 57 টি অক্ষরে এটি কি ভাল স্কোর?
জন ডিভোরাক

ঠিক আছে, অবশ্যই না :-)
জন ডভোরাক

15
আপনি কি নিশ্চিত যে আপনি এই 10s এর দুর্দান্ত 1x1 অ্যারেটি চান না? [10]
কোজিরো

8
তা হবে [[10]]?
ইঙ্গিতযুক্ত ted

উত্তর:


10

জাভাস্ক্রিপ্ট ES6, 30

(x=i=>Array(10).fill(i))(x(1))

কার্যক্রমে ES6 :)


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

6
@ জর্জি আমি পুরানো চ্যালেঞ্জের উত্তর দেওয়ার ক্ষেত্রে কোনও ভুল বলে মনে করি না। (কিছু চ্যালেঞ্জ লেখক যদি নতুন বিজয়ী আসেন তবে চ্যালেঞ্জটি কত পুরানো হোক না কেন স্বীকৃত উত্তরও আপডেট করবেন))
মার্টিন ইন্ডার

2
@ MartinBüttner এই উত্তরটি এই প্রতিদ্বন্দ্বিতা চেয়ে (এটা 2015 আসেন :)) গ্রহণ করা হচ্ছে যেমন ES6 কনিষ্ঠ জন্য elligible নয়, এবং Array.fill () শুধুমাত্র :) ES6 হয়
Katenkyo

আমি কেবল উত্তর দিয়েছি কারণ আমি অন্যান্য ES6 উত্তরগুলিও দেখেছি। আমি মনে করি না যে এতে কোনও ভুল আছে। লেখক তার প্রশ্ন আপডেট করতে পারে এবং অন্যরা উপরের সমস্যা সমাধানের একাধিক উপায়ের সুযোগ নিতে পারে।
আফনসো ম্যাটোস

ES6 এর খসড়াটি হিমশীতল হওয়ার আগেই বেশ আগে গৃহীত হয়েছিল (এটি কিছুদিন আগে ২০১৫ সালে)। এটি সঠিক বা ভুল কিনা তা সম্পর্কে আমি নিশ্চিত নই।
অপ্টিমাইজার

27

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

for(r=[b=[i=10]];i--;r[i]=b)b[i]=1

যেহেতু রেফারেন্স অনুসারে সারিগুলি সমতুল্য করা আপাতদৃষ্টিতে ঠিক আছে, তাই আমি অনুমান করি যে সত্যটিতে নির্ভর করা আপাতদৃষ্টিতে ঠিক। এটি আমাদের সারিগুলির মতো একই সময়ে টেবিলটি তৈরি করে একটি লুপটি শেভ করতে সহায়তা করে। সুতরাং, এখানে আমার নতুন প্রতিযোগী।

যেহেতু r[0]এবং b[0]লুপের সময় ওভাররাইট করা হয়, সেগুলিতে আবর্জনা থাকতে পারে। এটি আমাদের কিছু কমা কমাতে আরও একটি ফ্রি এক্সিকিউশন স্লট দেয়। দুঃখের বিষয়, r=b=[]করবেন না, তখন থেকে তারা সমান বাই রেফ।

এছাড়াও এটি ভাল স্কেল করে (99x99 এখনও 34 বাইট)


3
সুন্দর। সম্পূর্ণরূপে সুন্দর.
ব্রিগ্যুই 37

1
ধুর, আমার সঙ্গে শেষ পর্যন্ত: c=[b=[i=10]];while(i--)b[i]=c,c[i]=1। জ্ঞাত থাকা উচিত!!!
mowwwalker

19

ECMAScript 6 - 33 টি অক্ষর

x=(y=[..."1111111111"]).map(x=>y)

"1" s এর 10x10 অ্যারে আউটপুট করে।

এটি "1111111111" স্ট্রিংটিতে এমন সমস্ত প্রয়োজনীয় বৈশিষ্ট্য রয়েছে যা এটি অ্যারে হিসাবে বিবেচনা করা হয় যাতে আপনি এটি স্প্রেড অপারেটরটিকে ...অক্ষরের অ্যারে রূপান্তর করতে ব্যবহার করতে পারেন এবং তারপরে অ্যারের অনুলিপিটিতে এটি ম্যাপ করতে পারেন এই সত্যটি এটি অপব্যবহার করে ab প্রতিটি উপাদান "মূল" উল্লেখ করে।

অথবা শুধুমাত্র একটি চলক নাম (35 টি অক্ষরের জন্য) সহ:

x=(x=x=>[..."1111111111"])().map(x)

বা অতিরিক্ত বিভ্রান্তির জন্য (তবে 45 টি অক্ষরে)

x=[];x[9]=x;x=[...x].map(y=>[...x].map(x=>1))

বা (43 অক্ষর)

y=y=>[...x].map(x=>y);x=[];x[9]=x;x=y(y(1))

হলাম অপব্যবহার ...অপারেটর!
nderscore

13

44 বাইট

for(a=[i=10];i;)a[--i]=[1,1,1,1,1,1,1,1,1,1]

পূর্ববর্তী সংস্করণ:

for(a=i=[];i^10;)a[i++]=[1,1,1,1,1,1,1,1,1,1]

খুব চালাক আপডেট!
শ্মিদ্দী

(a = [i = 9]; i;) এর জন্য [i -] = [1,1,1,1,1,1,1,1,1,1]
আমেরিকান

1
@ আমেরিকানউমলৌট যা কাজ করে না
অনুলিপি করুন

1
আমি চাই ^জন্য!=
জন ডিভোরাক

13

45 অক্ষর

x=[a=[1,1,1,1,1,1,1,1,1,1],a,a,a,a,a,a,a,a,a]

প্রতিটি উপাদান একই অ্যারে নির্দেশ করে, তবে চশমাটিতে এর বিপরীতে কিছুই উল্লেখ করা যায় না!


4
অনুমানটি বলে যে "অ্যারেটি ইনস্ট্যান্ট করার পরে অবশ্যই অ্যাক্সেসযোগ্য হবে।" । আমি অনুমান করি যে x=এর শুরুতে আপনার অতিরিক্ত হওয়া উচিত
ক্রিশ্চিয়ান লুপাস্কু

তবুও খুব সুন্দর সমাধান (+1)
ক্রিশ্চিয়ান লুপাস্কু 25'13

এটি খুব ব্যবহারিক নয় যদিও মানতে পরিবর্তন হিসাবে সমস্ত অ্যারে প্রতিফলিত হবে।
গ্যাব্রিয়েল পেট্রিওলি

7

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

a=[];for(i=10;i;i--,a.push([1,1,1,1,1,1,1,1,1,1]));

বা যদি সমস্ত সূচকে একই অ্যারেতে নির্দেশ করার অনুমতি দেওয়া হয়:

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

a=[1,1,1,1,1,1,1,1,1,1];a=a.map(a.sort,a)

সমস্ত সূচকগুলি এখন একই কলামে নির্দেশ করে, যা সম্ভবত অযাচিত। (চেষ্টা করুন a[0][1] = 5; console.log(a[1][1]))
অনুলিপি করুন

হ্যাঁ আমি তা দেখিনি। আমি আমার উত্তর আপডেট করেছি।
grc

6

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

আমি এখনও পর্যন্ত সেরা। (এখনও চেষ্টা চলছে).

x=[];while(x.push([1,1,1,1,1,1,1,1,1,1])-10);

সংক্ষিপ্ত (ধন্যবাদ মেল্লামব্যাক!)

for(x=[];x.push([1,1,1,1,1,1,1,1,1,1])-10;);

নোট করুন যে গল্ফ forকরার whileসময় প্রায় সবসময় পছন্দনীয় । মূল বিবৃতি একই দৈর্ঘ্য ( while()বনাম for(;;)), তবে forআপনাকে আরও নমনীয়তা দেয়। এই ক্ষেত্রে, আপনি x=[]এর আরম্ভকারী স্থাপন করতে পারেন forএবং একটি অক্ষর সংরক্ষণ করতে পারেন।
মেল্লামোকব

@ মেল্লামোকব, টিপটির জন্য ধন্যবাদ :-)
ব্রিগেন্ড

5

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

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

for(a=[],i=10;i--;a[i]='1111111111'.split(''));

দুর্ভাগ্যক্রমে, 0x3FF.toString(2)কেবল স্ট্রিং আউট তালিকাভুক্ত করার মতো যথেষ্ট দক্ষ নয়, যা স্থায়ীভাবে অ্যারে ঘোষণা করার মতো কার্যকর নয়।

আপনি এইভাবে একটি চরিত্র শেভ করতে পারেন ( 46 ):

for(a=[],i=10;i--;a[i]=[1,1,1,1,1,1,1,1,1,1]);

আপনি এর মতো আরও 2 টি অক্ষর সংরক্ষণ করতে পারেন: ( 44 )

for(a=[i=10];i--;)a[i]=[1,1,1,1,1,1,1,1,1,1]

জেএস 1.8 ফাংশন এক্সপ্রেশন ক্লোজারগুলি (এফএফ কেবলমাত্র এটিএম) ব্যবহার করে আরও 44 বাইট সমাধান:

x=(x=[1,1,1,1,1,1,1,1,1,1]).map(function()x)

1
আপনি iএর aমতো শুরু করে একটি চর সংরক্ষণ করতে পারেন :a=[i=10]
কোডডর্ন

4

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

r=eval("["+(A=Array(11)).join("["+A.join("1,")+"],")+"]")

গল্ফ করার আগে:

a=Array(11).join("1,");
b=Array(11).join("["+a+"],")
c=eval("["+b+"]")

দ্রষ্টব্য: এটির জন্য ES5 প্রয়োজন, সুতরাং IE এর কাছ থেকে খুব বেশি আশা করবেন না।


কি দারুন! আমি লিখেছি eval('a=['+(b=Array(11)).join('['+b.join("1,")+'],')+']')। আলাদা আলাদা উক্তি থাকা এবং আমার অভ্যন্তরে ভেরিয়েবলটি থাকা ছাড়াও এগুলি হুবহু
মউওয়াককার

2
a=eval("["+Array(11).join("[1,1,1,1,1,1,1,1,1,1],")+"]")
13

3

54

এটি ইতিমধ্যে মারধর করা হয়েছে, তবে এখানে আমার সমাধান:

function x(){return[1,1,1,1,1,1,1,1,1,1]}x=x().map(x)

তীর ফাংশনগুলি জাভাস্ক্রিপ্ট গল্ফিংয়ের জন্য আকর্ষণীয় কাজ করবে। এখন কেবল যদি আমি বুঝতে পারি তুচ্ছভাবে কারি বিল্টিনগুলি কীভাবে তৈরি করতে হয়।
কোজিরো

এটিকে অ্যাক্সেসযোগ্য করার জন্য আপনার x=আগে x().map(বা y=, ইত্যাদি) সন্নিবেশ করা দরকার ?
শ্মিদ্দী

@ স্কমিডটি হ্যাঁ, তাই আপডেট হয়েছে।
কোজিরো

3

39 বাইট

ECMAScript 7 এ অ্যারে বোধগম্যতা ব্যবহার করে:

x=[x for(y in x=[1,1,1,1,1,1,1,1,1,1])]

ES6- তে কোনও অ্যারে বোঝাপড়া নেই, এটি একটি ES7 প্রস্তাব।
আফনসো ম্যাটোস

আমি যখন এই উত্তরটি দিয়েছিলাম তখন @afonsomatos, এটি এখনও ES6 খসড়ার অংশ ছিল। এটি এখনই আপডেট হয়েছে :)
nderscore

শেভ 4 অক্ষরের [1,1,1,1,1,1,1,1,1,1]সাথে প্রতিস্থাপন করা Array(10).fill(1)
শ্মিদ্দী

2

56 টি অক্ষর

বরং দীর্ঘ উত্তর, তবে 100x100 ইত্যাদির জন্য আরও ভাল

for(a=[[i=k=0]];++i<100;m?0:a[k=i/10]=[1])a[k][m=i%10]=1

2

জাভাস্ক্রিপ্ট, 36 টি অক্ষর (ইসিএমএ 6)

(a=[b=[]]).fill(b.fill(a[9]=b[9]=1))

আমার ব্রাউজারে (উবুন্টুতে ফায়ারফক্স) এবং কোডকেডেমি জাভাস্ক্রিপ্ট দোভাষীতে পরীক্ষিত


2

ES6, 54

এটি সবচেয়ে সংক্ষিপ্ত নয়, তবে আমি ভেবেছিলাম যে এখানে ইতিমধ্যে যা আছে তার জন্য আমি আলাদা পদ্ধতির জন্য যাব।

a=(''+{}).split('').slice(0,10).map(_=>a.map(_=>1))

একটি স্ট্রিংতে কোনও বস্তু নিক্ষেপ করুন স্ট্রিংটিকে "[object Object]"
চরগুলিতে বিভক্ত করুন ["[", "ও", "বি", ... "]"]
মাত্র 10
মানচিত্রের একটি টুকরো ধরুন প্রাথমিক টুকরোটিতে 1 ম্যাপিংয়ের ফলাফল


আমি এটি কোথায় পরীক্ষা করতে পারি? এটা আমার এফএফ ঠিক কাজ করে না।
কিওয়ারটি

তবে আমি কিছু প্যারেন্স মিস করেছি, কারণ aইতিমধ্যে এটি উপস্থিত ছিল যে সংস্করণটি কাজ করেছে বলে মনে হচ্ছে। আপডেট সংস্করণে এফএফ এবং নোড - হরমোনি পতাকাগুলির সাথে কাজ করা উচিত।
ড্যান প্রিন্স

এখন এটি ডান অ্যারে ফেরত দেয় তবে এটি কোনও ভেরিয়েবলের জন্য বরাদ্দ করা হয় নি।
কিওয়ারটি


0

জাভাস্ক্রিপ্ট - 64 63 59 টি অক্ষর

for(var a=b=[],i=100;i-->0;b[i%10]=1)if(i%10==0){a[i/10]=b;b=[]}

for(var a=b=[i=100];i-->0;b[i%10]=1)if(i%10==0){a[i/10]=b;b=[]}

একটি অক্ষরে অ্যারেতে পুনরুক্তিকারীকে লুকিয়ে সংরক্ষণ করা হয়েছে।

for(a=b=[1],i=100;i--;b[i%10]=1)if(i%10==0){a[i/10]=b;b=[]}

জ্যান্সের পরামর্শ সহ কয়েকটি অক্ষর সংরক্ষণ করা হয়েছে।

পঠনযোগ্য সংস্করণ:

for(var a = b = [i = 100]; i-- > 0; b[i % 10] = 1) {
  if(i % 10 == 0) {
    a[i / 10] = b;
    b = [];
  }
}

হ্যাঁ, এটি সংক্ষিপ্ততম সমাধান নয়, তবে রেডিমেড [1,1,1,1,1,1,1,1,1,1]অ্যারে ব্যবহার না করেই অন্য পদ্ধতি ।


1
পরিবর্তন i-->0করুন i--। "ডাউনটো" অপারেটরটি দুর্দান্ত হলেও এটি সত্যই প্রয়োজনীয় নয়। ==0পাশাপাশি দুটি বিট দ্বারা শেভ করা যেতে পারে। এছাড়াও, ছেড়ে দিন var। সাধারণত দরকারী, চারটি অকেজো বাইট এখানে কেবল অগ্রহণযোগ্য।
জন ডিভোরাক


0

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

function h(){s="1111111111",r=[10],i=-1;while(++i<10){r[i]=s.split("");}}

1
r=[10],আপনি অবিলম্বে লিখিত হিসাবে কিছুই করেনা r[0]। আপনাকে ডিক্লেয়ার করার দরকার নেই sএবং এটি করতে পারে "1111111111".split("")তবে এটি 22 টি অক্ষর যেখানে [1,1,1,1,1,1,1,1,1,1]21 টি অক্ষর।
এমটি0

0

জাভাস্ক্রিপ্ট ES6, 53

x="1".repeat(100).match(/.{10}/g).map(s=>s.split(""))

তবে অ্যারেতে থাকা স্ট্রিংগুলি :)


0

জাভাস্ক্রিপ্ট ES6, 53

x=eval("["+("["+"1,".repeat(10)+"],").repeat(10)+"]")

0

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

A=Array(10).fill(Array(10).fill(1))

1
ভেরিয়েবল সেট করা আউটপুটের অনুমোদিত পদ্ধতি নয়। তবে, আপনি f=>Array(10).fill(Array(10).fill(1))36 বাইটের জন্য (একটি বেনামে ফাংশন সংজ্ঞায়িত) করতে পারেন ।
Rɪᴋᴇʀ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.