একটি (কিছুটা) স্ব-রেফারেন্সিয়াল স্ট্রিং তৈরি করুন


27

আপনি এমন একটি স্ট্রিং তৈরি করতে চান যেখানে সূচীতে ( 1-সূচিযুক্ত ) অক্ষর nরয়েছে n। যখন n10 বছরের কম কম, এই সহজ: "123456789"nউদাহরণস্বরূপ, যখন 12 হয়, এটি অসম্ভব হয়ে যায়, যেহেতু 9 এর চেয়ে বেশি সংখ্যক (বেস 10 তে) একাধিক চরিত্র গ্রহণ করে। আমরা দুই-অক্ষর, সাবস্ট্রিং মধ্যে স্ট্রিং বিভাজক দ্বারা আপোস করতে পারে: "020406081012"। এখন প্রতিটি শেষে সূচক সাবস্ট্রিং n হয় n

এটি কোনও- dডিজিট সংখ্যার জন্য সাধারণীকরণ করা যেতে পারে । এখানে তিন অঙ্কের সংখ্যার জন্য স্ট্রিংয়ের "0991021" অংশের জন্য ব্যাখ্যা রয়েছে:

Index:     ... * 97  98  99*100 101 102*103 ...
               *           *           *
               *---+---+---*---+---+---*---+
Character: ... * 0 | 9 | 9 * 1 | 0 | 2 * 1 | ...
               *---+---+---*---+---+---*---+

আপনি যদি এখনও এটি সন্ধান না করে থাকেন তবে আপনাকে এমন একটি প্রোগ্রাম / ফাংশন লিখতে হবে যা একটি স্ট্রিং বা পূর্ণসংখ্যার লাগে এবং উপরে বর্ণিত স্ব-রেফারেন্সিয়াল স্ট্রিংটিকে আউটপুট দেয়। আপনি একক-সংখ্যা সংখ্যা, অক্ষর বা একক-অক্ষর স্ট্রিংয়ের একটি অ্যারে আউটপুটও করতে পারেন।

প্রদত্ত পূর্ণসংখ্যা সর্বদা তার দৈর্ঘ্যের দ্বারা ধনাত্মক এবং বিভাজ্য হবে (যেমন 126 3 দ্বারা বিভাজ্য; 4928 4 দ্বারা বিভাজ্য)। আপনার প্রোগ্রামটি তাত্ত্বিকভাবে একটি নির্বিচারে বড় ইনপুটটির জন্য কাজ করা উচিত তবে আপনি এটি ধরে নিতে পারেন যে এটি আপনার ভাষার সর্বাধিক পূর্ণসংখ্যা এবং / অথবা স্ট্রিং দৈর্ঘ্যের চেয়ে ছোট।

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

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।

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

1    => 1
9    => 123456789
10   => 0204060810
105  => 003006009012015018021024027030033036039042045048051054057060063066069072075078081084087090093096099102105
1004 => 00040008001200160020002400280032003600400044004800520056006000640068007200760080008400880092009601000104010801120116012001240128013201360140014401480152015601600164016801720176018001840188019201960200020402080212021602200224022802320236024002440248025202560260026402680272027602800284028802920296030003040308031203160320032403280332033603400344034803520356036003640368037203760380038403880392039604000404040804120416042004240428043204360440044404480452045604600464046804720476048004840488049204960500050405080512051605200524052805320536054005440548055205560560056405680572057605800584058805920596060006040608061206160620062406280632063606400644064806520656066006640668067206760680068406880692069607000704070807120716072007240728073207360740074407480752075607600764076807720776078007840788079207960800080408080812081608200824082808320836084008440848085208560860086408680872087608800884088808920896090009040908091209160920092409280932093609400944094809520956096009640968097209760980098409880992099610001004

উত্তর:


8

জেলি , 12 বাইট

VRUmLDUz0ZFU

আই / ও হ'ল ডিজিট অ্যারে আকারে। এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

VRUmLDUz0ZFU  Main link. Argument: A (digit array)

V             Eval; turn the digits in A into an integer n.
 R            Range; yield [1, ..., n].
  U           Upend; reverse to yield [n, ..., 1].
    L         Yield the length (l) of A.
   m          Modular; keep every l-th integer in A.
     D        Decimal; convert each kept integer into the array of its digits.
      U       Upend; reverse the digits of each integer.
       z0     Zip/transpose with fill value 0.
         Z    Zip again.
              This right-pads all digit arrays with zeroes.
          F   Flatten the resulting 2D array.
           U  Upend/reverse it.

7
দেখো মা, ইউনিকোড নেই!
ডেনিস

8
তবুও মনে হচ্ছে কিছু রাগী চালকের মতো।
জোনাথন অ্যালান

12

সি, 64 বাইট

l,i;main(n){for(scanf("%d%n",&n,&l);i<n;)printf("%0*d",l,i+=l);}

স্টিনে ইনপুট হিসাবে একটি একক পূর্ণসংখ্যা নেয়।


9

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

n=>[...Array(n/(l=`${n}`.length))].map((_,i)=>`${+`1e${l}`+l*++i}`.slice(1)).join``

হ্যাঁ, এটি একটি নেস্টেড টেম্পলেট স্ট্রিং। ES7 এ 79 বাইট:

n=>[...Array(n/(l=`${n}`.length))].map((_,i)=>`${10**l+l*++i}`.slice(1)).join``

7

এমএটিএল , 15 14 বাইট

VntG3$:10YA!1e

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

V        % Implicitly input number, n. Convert to string
n        % Length of that string, s
t        % Duplicate s
G        % Push n again
3$:      % 3-input range (s,s,n): generates [s, 2*s, ... ] up to <=n
10YA     % Convert each number to base 10. This gives a 2D array of char, with each
         % number on a row, left-padded with zeros if needed
!1e      % Reshape into a string, reading in row-major order. Implicitly display

6

05 এ বি 1 ই , 15 বাইট

কোড:

LD¹gÖÏvy0¹g×0ñ?

ব্যাখ্যা:

L                # Get the array [1, ..., input].
 D               # Duplicate this array.
  ¹g             # Get the length of the first input.
    Ö            # Check if it's divisible by input length.
     Ï           # Keep those elements.
      vy         # For each...
         ¹g      # Get the length of the first input.
        0  ×     # String multiply that with "0".
            0ñ   # Merge with the number.
              ?  # Pop and print without a newline.

মার্জ করা এভাবে করা হয়:

এগুলো থেকে:

000
 12

এটি এর ফলাফল:

012

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


শান্ত! যে ñকাজ যে জানেন না ।
এমিগনা

1
@ এমিগনা হ্যাঁ, তবে এটি কিছুটা দীর্ঘ দেখায়। আমার সম্ভবত সেই বিল্টিনের জন্য একটি বিল্টিন তৈরি করা উচিত: পি।
আদনান

প্যাডিংয়ের জন্য অন্তর্নির্মিতটিও সত্যই কার্যকর হবে।
এমিগনা

6

পাইথন 2, 78 70 68 64 63 বাইট

আসলে অনিত্য তরমুজ ধারণার উপর ভিত্তিবিন্দু এটা এমনকি ছোট করে তোলে (ব্যবহার inputআরও উত্তম) (না (ভর্তি স্ট্রিং অনগ্রসর 4 বাইট সংরক্ষণ) ()while):

n,s=input(),''
l=len(`n`)
while n:s=`n`.zfill(l)+s;n-=l
print s

এখানে পুরানো by০ বাইট অ্যাপ্রোচ ( strডেনিসকে জেনারেটরের আশেপাশে বর্গাকার বন্ধনীগুলি বাদ দিয়ে ব্যাককোট ব্যবহার করে 8 বাইট সংরক্ষণ করা ):

def f(n):l=len(`n`);print"".join(`x`.zfill(l)for x in range(l,n+l,l))

আমি জিফিল ... ডার্ন সম্পর্কে ভুলে গেছি।
ধ্বংসাত্মক লেবু

আপনি ​`x`​পরিবর্তে ব্যবহার করতে পারেন str(x)। এছাড়াও, []জেনারেটরের চারপাশে আপনার দরকার নেই ।
ডেনিস

আপনি আমাকে আবার ছাড়িয়ে গেছেন ... গুরুতর বার গুরুতর ব্যবস্থা গ্রহণের আহ্বান জানিয়েছে: আমাকে অজগর 2
ধ্বংসাত্মক লেবু

গড্ডামনিত আপনি আবার এটি করলেন!
ধ্বংসাত্মক লেবু

1
আপনার পেরেন দরকার নেই while(n)
ডেনিস


4

জাভাস্ক্রিপ্ট (ES6), 66

পুনরাবৃত্ত, nস্ট্রিং হিসাবে ইনপুট (কোনও সংখ্যা নয়) এবং আউটপুট স্ট্রিংয়ের আকার 2 জিবিতে সীমাবদ্ধ করে (এটি বেশিরভাগ জাভাস্ক্রিপ্ট ইঞ্জিনের স্ট্রিংয়ের সীমা ছাড়িয়ে যায়)

f=(n,i=1e9,s='',l=n.length)=>s[n-1]?s:f(n,i+=l,s+(i+'').slice(-l))

পরীক্ষা

f=(n,i=1e9,s='',l=n.length)=>s[n-1]?s:f(n,i+=l,s+(i+'').slice(-l))

function test() {
  var v=I.value;
  Alert.textContent=v % v.length ?
    'Warning: input value is not divisible by its string length':'\n';
  Result.textContent=f(v);
}  

test()
<input type=number id=I value=105 oninput='test()' max=500000>
<pre id=Alert></pre>
<pre id=Result></pre>


4

আর, 66 64 62 বাইট

সম্পাদনা:

x=nchar(n<-scan());paste0(str_pad(1:(n/x)*x,x,,0),collapse="")

প্রথম গল্ফ প্রচেষ্টা ...


2
হাই, এবং পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম পোস্ট!
Rɪᴋᴇʀ

3

2sable , 13 বাইট

কোড:

g©÷F®N>*0®×0ñ

সিপি -1222 এনকোডিং ব্যবহার করে ।


কেন আপনি এই 05AB1F নাম রাখেন নি? : 3
কনর ও'ব্রায়ান

1
@ কনরোও ব্রায়েন আমি আসলে এটি সম্পর্কে ভেবেছিলাম তবে নামগুলি দেখতে আসলে একই রকম এবং বিভ্রান্তিকর লাগবে : পি।
আদনান

আপনার অর্থ15AB1E
ASCII- কেবল

3

ব্র্যাচ্ল্যাগ , 53 45 42 37 28 বাইট

lB,? ybeN: B% 0, N: ef: {, "0": "9" y:? m।} acAl: Br -: "0" rjb: Acw \ 
lB,? ybeN: B% 0,10 : বি ^: এন +: ইফ: {, "0": "9" y:? মি।} Acbw \ 
lB,? YbeN: বি% 0,10: বি ^: এন +: ইফ: {: 16 +: @ প্রিম ।} acbw \ 
lB,? ybeN: B% 0,10: B ^: N +: efbe: 16 +: @ Prmw \
? LB, ybeN: বি% 0,10: বি ^: n +: efbew \

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


3

বাশ, 31 22 বাইট

seq -ws '' ${#1}{,} $1

আইডিয়নে এটি পরীক্ষা করুন ।

Iz বাইট বন্ধ করে দেওয়ার জন্য @ আইজাবেরাকে ধন্যবাদ!


3

রুবি, 52 48 + nপতাকা = 49 বাইট

((l= ~/$/)..$_.to_i).step(l){|j|$><<"%0#{l}d"%j}

chopকোনও অনুমানযোগ্য নতুন লাইন ছাড়া ইনপুট পাস হয়ে গেছে বলে ধরে নিলে আপনার প্রয়োজন হবে না ? আমি নিশ্চিত না যে এটি কাজ করবে কিনা। বা কীভাবে ধরে নেওয়া যায় যে সেখানে সবসময় একটি থাকে এবং লেখা হয় l=~-size?
লিন

@ লিন কল sizeকরা আমার পক্ষে কাজ করে না। ওহ ভাল, আমি এমন একটি কৌশল মনে করেছি যা আমি আগের উত্তরটিতে ব্যবহার করেছি যা যাইহোক কম
মান কালি

2

পাইথন 3 2, 79 74 69 65 68 67 বাইট

ধন্যবাদ ডেনিস!

def f(n):i=l=len(`n`);s='';exec n/l*"s+=`i`.zfill(l);i+=l;";print s

খারাপ আউটপুট পদ্ধতি থেকে বাইট গণনা বৃদ্ধি


1
এর len(x)পরিবর্তে হওয়া উচিত নয় fএবং তারপরে কোনও ভেরিয়েবলকে বরাদ্দ করে বাইটগুলি সেভ করতে হবে?
কার্ল ন্যাপফ

আমার তো মনে হয় না .. তোমার মানে কি? এছাড়াও, আমি আপনাকে অজগর 2 দিয়ে ছাড়িয়েছি, তবে কিছু বোকা জিনিস এখনই এটি ঘটছে _
ধ্বংসাত্মক লেবু

আপনি পাইথন ২ এ স্যুইচ করেছেন বলে মনে হয় Also এছাড়াও, আউটপুটটির অংশটি ওভাররাইট করতে ব্যাকস্পেস ব্যবহার করার ক্ষেত্রে মেটা সম্পর্কে conকমত্যের ভিত্তিতে কেবল ASCII আর্ট চ্যালেঞ্জগুলিতে অনুমোদিত।
ডেনিস

পাইথন 2 এ, /পূর্ণসংখ্যা বিভাগ foe.integer আর্গুমেন্ট সম্পাদন করে।
ডেনিস

2

zsh, 28 বাইট

printf %0$#1d {$#1..$1..$#1}

zsh + seq, 21 20 বাইট

এটি ডেনিসের মতো প্রায় একই উত্তর তবে 20 বাইটে zsh কারণ

seq -ws '' $#1{,} $1


2

পার্ল, 40 বাইট

39 বাইট কোড +1 এর জন্য -n

$}=y///c;printf"%0$}d",$i+=$}while$i<$_

ব্যবহার

echo -n 9 | perl -ne '$}=y///c;printf"%0$}d",$i+=$}while$i<$_'
123456789
echo -n 10 | perl -ne '$}=y///c;printf"%0$}d",$i+=$}while$i<$_'
0204060810
echo -n 102 | perl -ne '$}=y///c;printf"%0$}d",$i+=$}while$i<$_'
003006009012015018021024027030033036039042045048051054057060063066069072075078081084087090093096099102
echo -n 1000 | perl -ne '$}=y///c;printf"%0$}d",$i+=$}while$i<$_'
0004000800120016002000240028003200360040004400480052005600600064006800720076008000840088009200960100010401080112011601200124012801320136014001440148015201560160016401680172017601800184018801920196020002040208021202160220022402280232023602400244024802520256026002640268027202760280028402880292029603000304030803120316032003240328033203360340034403480352035603600364036803720376038003840388039203960400040404080412041604200424042804320436044004440448045204560460046404680472047604800484048804920496050005040508051205160520052405280532053605400544054805520556056005640568057205760580058405880592059606000604060806120616062006240628063206360640064406480652065606600664066806720676068006840688069206960700070407080712071607200724072807320736074007440748075207560760076407680772077607800784078807920796080008040808081208160820082408280832083608400844084808520856086008640868087208760880088408880892089609000904090809120916092009240928093209360940094409480952095609600964096809720976098009840988099209961000

2

k4, 27

{,/"0"^(-c)$$c*1+!_x%c:#$x}

সত্যিই মোটেও গল্ফ নয়, কেবলমাত্র অনুমানের সরাসরি-এগিয়ে বাস্তবায়ন।

                        $ / string
                       #  / count
                     c:   / assign to c
                   x%     / divide x by
                  _       / floor
                 !        / range (0-based)
               1+         / convert to 1-based
             c*           / multiply by count
            $             / string
       (-c)               / negative count
           $              / pad (negative width -> right-aligned)
   "0"^                   / fill blanks with zeros
 ,/                       / raze (list of string -> string)

2

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

n=>eval('c="";for(a=b=(""+n).length;a<=n;a+=b)c+=`${+`1e${b}`+a}`.slice(1)')

বা 71 স্ট্রিং আর্গুমেন্টের জন্য অনুমতি দিলে:

n=>eval('c="";for(a=b=n.length;a<=n;a+=b)c+=`${+`1e${b}`+a}`.slice(1)')

@8865655 কে ধন্যবাদ!

Ungolfed:

function x(n)
{ 
   c = "", a = b = (""+n).length; 
   while(a<=n)
   {
       c=c+"0".repeat(b-(""+a).length)+a
       a+=b;
   }
   return c;
}

উন্নতির জন্য অনেক জায়গা, তবে আমি এখনই ক্লান্ত


নিস! আমি কয়েক উন্নতি যে করা সম্ভব হয়েছে (76 বাইটস) পাওয়া গেছে: n=>eval('c="";for(a=b=(""+n).length;a<=n;a+=b)c+=`${+`1e${b}`+a}`.slice(1)')। প্রধান বিটগুলি একটি forলুপ এবং নীলের 1e${b}কৌশল ব্যবহার করছে।
ব্যবহারকারী 81655

@ user81655 - এটি আমাকে দেয় Uncaught SyntaxError: Invalid or unexpected token। আমি ঠিক জাগ্রত
থাকায়

হুম। এটি লুকানো অক্ষর হতে পারে যা কখনও কখনও এসও মন্তব্যে যুক্ত হয়। এটি লেখার চেষ্টা করুন।
ব্যবহারকারী 81655

2

আর, 149 142 138 বাইট

x=rep(0,n);a=strtoi;b=nchar;for(i in 1:(n=scan()))if(!i%%b(a(n)))x[i:(i-b(a(i))+1)]=strsplit(paste(a(i)),"")[[1]][b(a(i)):1];cat(x,sep="")

ncharকোডে রেখে যাওয়াটি প্রতিস্থাপনের চেয়ে একই সংখ্যক বাইট সহ একটি প্রোগ্রাম দেয় bতবে কোডটিতে চারপাশে এলোমেলো চিঠিগুলি ঘোরাফেরা আরও বেশি করে দেয় ... রহস্যময়

অবহেলিত:
প্রতিটি nchar(strtoi(something))প্রদত্ত সংখ্যায় অঙ্কের সংখ্যা গণনা করার অনুমতি দেয়।

n=scan()   #Takes the integer 
x=rep(0,n) #Creates a vector of the length of this integer, full of zeros

for(i in 1:n)
    if(!i%%b(strtoi(n)))         #Divisibility check
        x[i:(i-nchar(as.integer(i))+1)]=strsplit(paste(a(i)),"")[[1]][nchar(as.integer(i)):1]; 
        #This part replace the zeros from a given position (the index that is divisible) by the numerals of this position, backward.

cat(x,sep="")

strsplitফাংশন splitten উপাদান ধারণকারী ভেক্টর একটি তালিকা আউটপুট। এজন্য আপনাকে তালিকার 1সেন্ট এলিমেন্টে পৌঁছাতে হবে এবং তারপরে iভেক্টরের লিখিত উপাদানটি লিখতে হবেstrsplit[[1]][i]


আরআর_প্যাড () ব্যবহারের চেষ্টা করুন
হেজেডএন্ডলিভার্ড

@ শেগড্যান্ডলভেভার্ড: ভাল, এই ফাংশনটির একটি প্যাকেজ প্রয়োজন (যেমন এটি ভ্যানিলা আর দিয়ে চালানো যায় না ), এবং আমি পিপিসিজি-ইন করার সময় এ জাতীয় ব্যবহার করতে চাই না
ফ্রেডেরিক

1

এসকিউএফ - 164

ফাইল হিসাবে ফাংশন হিসাবে ব্যবহার:

#define Q String""
l=(ceil log _this)+1;s='';for[{a=l},{a<=_this},{a=a+l}]do{c=([a]joinQ)splitQ;reverse c;c=(c+['0'])select[0,l];reverse c;s=format[s+'%1',c joinQ]}

যেমন কল INTEGER call NAME_OF_COMPILED_FUNCTION


1

পাওয়ারশেল, 77 বাইট

$x="$($args[0])";$l=$x.Length;-join(1..($x/$l)|%{"$($_*$l)".PadLeft($l,'0')})

সংক্ষিপ্ত স্ট্রিং কাস্টগুলিতে স্ট্রিং ইন্টারপোলেশন ব্যবহার করে। দ্বিতীয় সেমিকোলনের আগের অংশগুলি পুনঃব্যবহৃত জিনিসগুলির নাম সংক্ষিপ্ত করে। তারপরে, ইনপুট পর্যন্ত প্রতিটি পূর্ণসংখ্যার - এবং কেবলমাত্র যারা ইনপুটটির দৈর্ঘ্যের বহুগুণ হয় - ইনপুট স্ট্রিংয়ের মতো দীর্ঘ হওয়ার জন্য প্যাড করা হয় এবং শেষ পর্যন্ত একটিতে যোগ হয়।


1

আসলে, 30 বাইট

;╝R╛$l;)*@#"%0{}d"f╗`#╜%`MΣ╛@H

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

আমি এই কোডটির দৈর্ঘ্য নিয়ে সন্তুষ্ট নই, তবে আমি নিশ্চিত নই যে এটিকে আরও খাটো করা যায় (যদি আদৌ হয়)।

ব্যাখ্যা:

;╝R╛$l;)*@#"%0{}d"f╗`#╜%`MΣ╛@H
;╝                              duplicate input, push a copy to reg1
  R                             range(1, input+1)
   ╛$l                          push input from reg1, stringify, length
      ;)                        duplicate and move copy to bottom of stack
        *                       multiply range by length of input
         @#                     swap range with length, make length a 1-element list
           "%0{}d"f             "%0{}d".format(length) (old-style Python format string for zero-padding integers to length of input)
                   ╗            save format string in reg0
                    `#╜%`M      for each value in range:
                     #            make it a 1-element list
                      ╜%          format using the format string
                          Σ     concatenate
                           ╛@H  take only the first (input) characters in the resulting string

0

সিজেম, 19 বাইট

q_,:V\i,%{V+sV0e[}/

এটি অনলাইনে চেষ্টা করুন । কেউ এখনও সিজেমে পোস্ট করেন নি, তাই এই স্ক্রিপ্টটি আমি পরীক্ষার ক্ষেত্রে ব্যবহার করেছি।

ব্যাখ্যা

q_,:V  e# Store the length of the input as V
\i,    e# Push the range from 0 to the input
%      e# Keep only every V'th number in the array
{      e# Do this for each number:
  V+   e# Add V to get the right number of leading zeroes
  s    e# Convert to string for left padding
  V    e# Push V, the length to bring each string to, and...
  0    e# The character to add to the left
  e[   e# Left pad
}/

0

পিএইচপি, 83 78 বাইট

<?$a=$argv[1];$i=$y=strlen($a);while($y<=$a){printf('%0'.$i.'d', $y);$y+=$i;}

টিপস আরও স্বাগত হয়। লুপের জন্য লুপ থেকে কিছুক্ষণ লুপে পরিবর্তন করে এটি নিজেকে এক বাইটে গল্ফ করার ব্যবস্থা করুন।

এই কোডটি ধরে নিয়েছে যে এটি কমান্ড লাইন থেকে কার্যকর করা হচ্ছে এবং $ argv [1] হ'ল int।

ধন্যবাদ:

@ অ্যালেক্সগিটমিয়ার তার পরামর্শ (মন্তব্য দেখুন) এটিকে 5 বাইট দ্বারা 78 বাইটে গল্ফ করেছেন।


আপনি পরিবর্তন করতে পারেন echo sprintf(...)->printf(...)
অ্যালেক্স গিটেমিয়ার

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