পাইগুলিতে তাদের প্রথম উপস্থিতি অনুসারে অঙ্কগুলি সাজান


17

একটি অ-ঋণাত্মক সংখ্যা দেওয়া n, বাছাই ডিজিটের nতাদের প্রথম সংঘটন দ্বারা পাই

ইনপুটটি ফাংশন ক্লিপ আর্গুমেন্ট, বা এসটিডিআইএন এবং একটি স্ট্রিং, চর [] বা পূর্ণসংখ্যার হিসাবে নেওয়া যেতে পারে। আপনি রিটার্ন মান, প্রস্থান স্থিতি বা STDOUT মাধ্যমে আউটপুট করতে পারেন।



আমরা কি ইনপুট এবং আউটপুটটিকে স্ট্রিং হিসাবে, বা অঙ্কের অ্যারে হিসাবে নিতে পারি?
ইটিএইচ প্রডাকশনগুলি

@ ইথ প্রডাকশনস স্পষ্ট।
রোমান গ্রাফ

19
কয়েকটি পরীক্ষার কেস ভাল লাগবে।
ডেনিস

1
এখন যেহেতু 12 টি উত্তর ইতিমধ্যে উপস্থিত রয়েছে, সমস্তই একই জিনিস সম্পাদন করছে, যদি আপনি এখনও জিজ্ঞাসা করা হচ্ছে যা সম্পর্কে অস্পষ্ট হন, তবে এটি প্রশ্নের সমস্যা নয়।
ফাঁস নুন

উত্তর:


14

পাইথ, 8 6 বাইট

ox+.n0

এখানে চেষ্টা করুন।

-1 ফাঁস নুনকে ধন্যবাদ : ইনপুটটি 0যদি কখনও প্রয়োজন হয় তবে তা সরবরাহ করবে ।
তুচ্ছ -১ জাকুবকে ধন্যবাদ : ব্যাকটিকের প্রয়োজন নেই (আহ, আমি কীভাবে মিস করলাম, কীভাবে?!?)।


ওহু, এই এমনকি 05AB1E মার! সম্পাদনা করুন: এটি 05AB1E কে পরাজিত করে না এবং আমি চুরি করতে চাই না :(
এরিক আউটগল্ফার

3
আমি এটি খুঁজে পেয়েছি। আপনার 0শেষের দরকার নেই। ইনপুট একটি থাকে 0, 0ইনপুট দ্বারা উপলব্ধ করা হবে; যদি ইনপুটটিতে একটি না থাকে তবে তাতে কিছু আসে যায় না 0
লিকি নুন

3
@ ল্যাকিয়ুন এবং আপনি এমনকি ব্যাকটিকটি সংরক্ষণ করতে পারেন:ox+.n0
জাকুব

ঠিক আছে, প্রথম মন্তব্য উপেক্ষা করুন, LeakyNun এবং Jakube এর জন্য ধন্যবাদ, আমি আবার 05AB1E কে পরাজিত করেছি, আমি এবার ভাল আশা করি।
এরিক আউটগল্ফার

1
এটি অন্তর্নিহিত ইনপুটটির একটি সুন্দর পরিমাণ।
ইসাকাক

21

পাইথন 3 , 40 39 বাইট

1 বাইট জোনাথন অ্যালানকে ধন্যবাদ।

lambda s:sorted(s,key="145926870".find)

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


6
আপনি ড্রপ করতে পারেন 3, যেহেতু -1কোনও আইটেম পাওয়া না গেলে অনুসন্ধান ফিরে আসবে ।
জোনাথন অ্যালান

18

05 এ বি 1 ই , 10 9 7 বাইট

সংরক্ষণ করা 1 বাইট ধন্যবাদ লিকি নুনকে যে নকলকে ফিল্টার করা অপ্রয়োজনীয় তা উল্লেখ করে। আদনানকে
ধন্যবাদ 2 বাইট সংরক্ষণ করা ।

žqRvy†J

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

ব্যাখ্যা

žq       # push pi to 15 decimals (contains all digits but 0)
  R      # reverse
   vy    # for each char in pi
     †J  # move it's occurrences in the input to the front

13žsRvy†J9 বাইটের জন্য
লিকি নুন

@ ল্যাকইনুন: ওহ হ্যাঁ, সদৃশগুলি কিছু আসে যায় না। ধন্যবাদ :)
এমিগানা

3
আপনি কি žqপরিবর্তে ব্যবহার করতে পারেন 13žs?
আদনান

@ আদনান এটি কাজ করে বলে মনে হচ্ছে না।
এরিক আউটগল্ফার

2
@ আদনান: হ্যাঁ অবশ্যই আমি বুঝতে পারি নি যে অন্য পাই ধ্রুবক আছে :)
এমিগানা

8

জেলি , 10 বাইট

“ṀSṪw’ṾiµÞ

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

অঙ্কের স্ট্রিং হিসাবে ইনপুট নেয় T

-3 বাইট @ETH প্রডাকশন ধন্যবাদ

ব্যাখ্যা

“ṀSṪw’ṾiµÞ
        µ  - Separate chain into function “ṀSṪw’Ṿi and sort atom Þ.
         Þ - Sort the input by
       i   - Each digit's index in: 
“ṀSṪw’     - the literal 3145926870 ...
      Ṿ    - transformed into the list 3,1,4,5,9,2,6,8,7,0

আমি মনে করি 31459268704-অঙ্কের বেস-250 স্ট্রিং হিসাবে উপস্থাপিত হতে পারে (যার অর্থ এটি 10 ​​এর পরিবর্তে 6 বাইট নেয়) তবে আমি কীভাবে এটি সংকুচিত করতে পারি তা নিশ্চিত নই।
ETH প্রোডাকশনগুলি

জেলি কি পাই এর জন্য বিল্টিন নেই?
গণিত জাঙ্কি

@ মাথজানকি তবে জেলি স্ট্রিং ম্যানিপুলেশনে খুব বেশি দক্ষ নয়
লিকি নুন

@ ম্যাথজুঙ্কি হ্যাঁ, তবে তালিকার
কারসাজিতে

“ṀSṪw’দিতে হবে 3145926870
লিকি নুন

8

জাপট , 10 9 বাইট

8 টি বাইট কোড, -Pপতাকাটির জন্য +1 ।

–!bMP+U

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

ব্যাখ্যা

–!bMP+'0  // Implicit input

¬          // Split the input into chars.
 ñ         // Sort each char in the resulting list by
  !b       //   its index in
    MP+U   //     Math.PI + the input.
-P         // Join the result back into a single string.
           // Implicit: output result of last expression


7

জেলি ,  8  7 বাইট

ডেনিসকে -1 বাইট ধন্যবাদ (ইনপুটটিতে যে কোনও বিদ্যমান ব্যবহার 0করুন, চতুর।

ØP;ṾiµÞ

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

কিভাবে?

ØP;ṾiµÞ - Main link: string s (char list)
     µÞ - sort the characters, c, of s by:
    i   -   first index of c in:
ØP      -     pi yield: 3.141592653589793
  ;     -     concatenate with left: [3.141592653589793, c]
   Ṿ    -     un-evaluate: "3.141592653589793,c" (a char list with the digit character c)
                                if any c is 0 ^ it will then be to the right of all others

... এবং সেখানে আমি স্কোয়ারগুলি অনুসন্ধান করছিলাম - 3820009(স্কয়ার্ট 14592468760081) এখনও 3বেসে অঙ্ক রয়েছে 250
জোনাথন অ্যালান

আপনার ব্যাখ্যায় ভুল স্থানে রাখা হয়েছে।
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার - ধন্যবাদ, সমন্বিত
জোনাথন অ্যালান

6

সিজেম , 15 12 10 8 বাইট

r{P`#c}$

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

-3: Pআক্ষরিক পরিবর্তে পাই ভেরিয়েবলের ভিত্তিতে একটি স্ট্রিং ব্যবহার করুন ।
-2: সিদ্ধান্ত নিয়েছে আমার মোটেও আলাদা করার দরকার নেই, যেহেতু কোনও সূচী সন্ধান করা যাই হোক না কেন প্রথম ঘটনাটি গ্রহণ করে। -2: জিমি 23013 ধন্যবাদ এক্স মড 65536 ব্যবহার করে একটি আকর্ষণীয় পদ্ধতির জন্য ।

ব্যাখ্যা:

r {P` # c} $ e # একটি ইনপুট টোকেন নেয়
পুনরায় পূর্ণসংখ্যাটি স্ট্রিং হিসাবে নিন
 S পি # সি} ই # বাছাই করার কী:
  পি ই # পুশ পি (ডিফল্টে 3.141592653589793)
   `e # স্ট্রিং উপস্থাপনায় রূপান্তর করুন
    # ই # আমরা তৈরি স্ট্রিংয়ের মধ্যে চরের সূচকটি সন্ধান করুন
         ই # এ '।' কোনও পূর্ণসংখ্যার মধ্যে কখনও পাওয়া যাবে না, তবে এটি কোনও ব্যাপার নয়, যেহেতু স্থানান্তরটি আদর্শ বাছাইকে সংরক্ষণ করে।
         ই # এ '0' -কে সূচিযুক্ত করা হবে।
     সিআর # চারকে সূচক রূপান্তর করুন
         e # এটি প্রথমে সূচক% 65536 গণনা করে এবং পরে চরে রূপান্তর করে। আমাদের এটি দরকার কারণ অন্যথায় 0টিকে -1 হিসাবে সূচকযুক্ত করা হবে, অর্থাৎ ক্ষুদ্রতম সূচক।
         e # আমাদের অভিধানে আবার রূপান্তর করার দরকার নেই, যেহেতু আমরা লেকোগ্রাফিকাল বাছাই করতে পারি।
       $ ই # কী দিয়ে বাছাই করুন


1
হ্যাঁ, এমএটিএলকে পরাজিত করুন :)
এরিক দ্য আউটগল্ফার


@ jimmy23013 বাহ এটা চালাক এটি প্রায় এরকম একটি (অন্তর্নির্মিত)% 65536 এর জন্য একটি বিল্টিন রয়েছে এবং ciএমনকি পূর্ণসংখ্যায় ফিরে রূপান্তর করতে পারে।
এরিক দ্য আউটগল্ফার

5

পিএইচপি, 71 বাইট

Regex সমাধান খাটো

for(;~$c=_3145926870[$i++];)echo str_repeat($c,substr_count($argn,$c));

অথবা

for(;~$c=_3145926870[$i++];)echo str_pad("",substr_count($argn,$c),$c);

অনলাইন সংস্করণ

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

for(;~$c=$argn[$i++];)$j[strpos("3145926870",$c)].=$c;ksort($j);echo join($j);

পিএইচপি, 112 বাইট

$a=str_split($argn);usort($a,function($x,$y){return strpos($d="3145926870",$x)<=>strpos($d,$y);});echo join($a);

অনলাইন সংস্করণ


আমি একটি 69 বাইট সমাধান যুক্ত করেছি । হতে পারে আমরা এটিকে একসাথে 66 বাইটে নামাতে পারি;)
ক্রিস্টোফ

5

সি, 103 97 বাইট

char*p="3145926870";s(*a,*b){return strchr(p,*a)-strchr(p,*b);}f(char*t){qsort(t,strlen(t),1,s);}

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


ধন্যবাদ, @ সেলিংক্যাট, এমএসভিসি মোটেও পছন্দ করে না, আমি মনে করি আমার বরং জিসি :-) দিয়ে প্রোটোটাইপ করা উচিত
জোহান ডু টোইট

MSVC সম্ভবত হবে না যে জিসিসি আপনি খাদে দেয় মত charমধ্যে char*pএবংchar*t
সিলিংক্যাট


3

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

YP99Y$uj!y=sY"

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

একটি উদাহরণ সহ ব্যাখ্যা

প্রতীকটি ;ম্যাট্রিক্সে সারি বিভাজক হিসাবে ব্যবহৃত হয়। সুতরাং [1 2 3]একটি সারিতে ভেক্টর, হয় [1; 2; 3]একটি কলাম ভেক্টর, এবং [1 2; 3 4]একটি বর্গাকার ম্যাট্রিক্সের হয়। পরেরটিও স্বচ্ছতার জন্য, হিসাবে প্রতিনিধিত্ব করা যেতে পারে

[1 2;
 3 4]

2325উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

YP     % Push approximation of pi as a double (predefined literal)
       % 3.14159265358979
99Y$   % Variable-precision arithmetic with 99 digits. Gives a string.
       % The input 3.14159265358979 is recognized as representing pi
       % STACK: '3.141592653589793238462 ··· 707'
u      % Unique entries, keeping order of their first appearance
       % STACK: '3.145926870'
j      % Input line as a string
       % STACK: '3.145926870', '2352'
!      % Transpose
       % STACK: '3.145926870', ['2'; '3';'5'; '2']
y      % Duplicate the second-top element in the stack
       % STACK: '3.145926870', ['2'; '3';'5'; '2'], '3.145926870'
=      % Test for equality, with broadcast. This gives a matrix with
       % all pairwise comparisons)
       % STACK: '3.145926870', [0 0 0 0 0 0 1 0 0 0 0;
       %                        1 0 0 0 0 0 0 0 0 0 0;
       %                        0 0 0 0 1 0 0 0 0 0 0;
       %                        0 0 0 0 0 0 1 0 0 0 0]
s      % Sum of each column
       % STACK: '3.145926870', [1 0 0 0 1 0 2 0 0 0 0]
Y"     % Run-length decoding. Implicitly display
       % STACK: '3522'


2

সি # ইন্টারেক্টিভ, 37 36 বাইট

i.OrderBy(c=>"145926870".IndexOf(c))

আসলে আপনাকে যথাযথ ফলাফলের জন্য সি # ইন্টারেক্টিভ এ কার্যকর করতে হবে, তবে আমার ধারণা আপনি প্রস্থান স্থিতি দিয়ে বোঝাতে চেয়েছিলেন এটিই । ভ্যারিয়েবল আমি আসলে ইনপুট ভেরিয়েবল (এটি উদাহরণস্বরূপ স্ট্রিং হতে পারে), সুতরাং এটি মূলত পদ্ধতি পরামিতি।

আমি মনে করি কোডটি নিজেই বেশ সোজা এগিয়ে রয়েছে।


কোথায় 3?
পল

1
@ পল এটি প্রয়োজনীয় নয়, কারণ উপাদানটি খুঁজে পাওয়া না গেলে এটি -1 ফেরত দেয়।
মেটাকলন

এটি যদিও কোডের একটি স্নিপেট, যদিও আমি ইন্টারেক্টিভের মধ্যেও নিশ্চিত যে আপনি iকোথাও কেন এটি ইনপুট হিসাবে নেওয়া যেতে পারে তা উল্লেখ করতে হবে। এছাড়াও আপনি যদি সি # বলছেন তবে আপনাকে using System.Linq;বাইট গণনাতে অন্তর্ভুক্ত করতে হবে । তবে এটি যদি ইন্টারেক্টিভ হয় তবে আপনার ভাষাটি সি # ইন্টারেক্টিভ হিসাবে সম্পূর্ণ নির্দিষ্ট করতে হবে না #
TheLethalCoder

@TheLethalCoder আমি এটি সি # ইন্টারেক্টিভ আপডেট করেছি। ব্যবহারটি ইন্টারেক্টিভের ক্ষেত্রে প্রয়োজনীয় নয়, কারণ এটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত।
মেটাকলন

2

05 এ বি 1 ই , 5 6 বাইট ( নন-কেপটিং )

বুঝতে হবে যে 0মান দৈর্ঘ্যের পাই পাই ধ্রুবক উপস্থিত নেই।

Σтžsyk

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

Σтžsyk
Σ      Sort by the result of code
 тžs   Push 100 digits of pi
   yk  Index of digit in pi

আপনার এই অ-প্রতিযোগিতাকে Σচ্যালেঞ্জের চেয়ে নতুন হিসাবে চিহ্নিত করা উচিত ।
Emigna

@ এমিগনা এটি চিহ্নিত করেছে, ধন্যবাদ। তবে প্রয়োজনীয়
ফিক্সের

এই পদ্ধতির জন্য আপনার খুব খারাপ দরকার zero কমপক্ষে এই ভাষার পক্ষে এটি সর্বোত্তম হওয়া উচিত। এর চেয়ে বেশি চাইতে পারে না :)
এমিগানা

2

পিএইচপি, 66 65 বাইট

টাইটাসকে 1 বাইট সংরক্ষণ করা হয়েছে।

while(~$d=_3145926870[++$i])echo preg_filter("/[^$d]/",'',$argn);

1

জাভা 7, 110 বাইট

String c(String s){String r="";for(char i:"3145926870".toCharArray())r+=s.replaceAll("[^"+i+"]","");return r;}

ব্যাখ্যা:

String c(String s){                       // Method with String parameter and String return-type
  String r="";                            //  Result String
  for(char i:"3145926870".toCharArray())  //  Loop over the characters of "3145926870"
    r+=s.replaceAll("[^"+i+"]","");       //   Append the result-String with all the occurrences of the current character
                                          //  End of loop (implicit / single-line body)
  return r;                               //  Return the result-String
}                                         // End of method

পরীক্ষার কোড:

এখানে চেষ্টা করুন।

class M{
  static String c(String s){String r="";for(char i:"3145926870".toCharArray())r+=s.replaceAll("[^"+i+"]","");return r;}

  public static void main(String[] a){
    System.out.println(c("12345678908395817288391"));
  }
}

আউটপুট:

33311145599922688888770

1

ক্লোজার, 38 বাইট

#(sort-by(zipmap"3145926870"(range))%)

স্ট্রিং ইনপুট, অক্ষর একটি ক্রম প্রদান। zipmapএকটি "অভিধান" অবজেক্ট তৈরি করে, যা ফাংশন প্রসঙ্গেও ব্যবহার করা যেতে পারে।

(f "1234")
(\3 \1 \4 \2)

যদি ইনপুট ডিজিটগুলি অনন্য হওয়ার গ্যারান্টিযুক্ত হয় তবে আপনি কেবল এটি করতে পারেন #(filter(set %)"3145926870")


1

পিএইচপি, 69 68

for(;(~$d=$argn[$j++])||~$c=_3145926870[$i+++$j=0];)$c==$d&&print$d;

তবুও প্রেগ_ফিল্টারটি মারধর করেছে তবে আমি ভেবেছিলাম এটি খুব সুন্দর nice হয়তো কেউ কেউ কিছু বাইট গল্ফ করতে পারেন।


$c!=$d?:print$dবিকল্প হিসাবে $c==$d&&print$dআমি কেবল মুহূর্তে দেখতে পাই
জার্গ হালসারম্যান

1
_3145926870By "3145926870" এর পরিবর্তে 1 বাইট সংরক্ষণ করুন
জার্গ হালসারম্যান

for(;(~$d=$argn[$j++])?:~$c=_3145926870[++$i+$j=0];$c!=$d?:print$d);এছাড়াও একটি কাজের বিকল্প
জার্গ হালসারম্যান


0

কে, 19 বাইট

{x@<"3145926870"?x}

ব্যাখ্যা:

{                 } /function(x)
    "3145926870"?x  /for each x: "3145926870".index(x)
   <                /get indices with which to sort
 x@                 /sort x by those indices
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.