একটি সংখ্যা বর্ণমালা অনুসারে পুনরায় সাজান


24

একটি অ-নেতিবাচক পূর্ণসংখ্যার ( n) দেওয়া হয়েছে, প্রতিটি ফাংশনের nশাব্দিক বানান অনুসারে বর্ণানুক্রমিক ক্রমে ফিরে আসা একটি ফাংশন তৈরি করুন n

উদাহরণ:

Input: 101
>> one, zero, one
>> one, one, zero
Output: 110

Input: 31948
>> three, one, nine, four, eight
>> eight, four, nine, one, three
Output: 84913

Input: 5544
>> five, five, four, four
>> five, five, four, four
Output: 5544

Input: 1234567890
Output: 8549176320

দ্রষ্টব্য: উদাহরণের ক্রিয়াকলাপগুলি কেবল উদাহরণস্বরূপ এবং আউটপুটে অন্তর্ভুক্ত করার দরকার নেই। কেবল বর্ণমালা অনুসারে বাছাই করা নম্বরটি ফেরত দেওয়া দরকার।

এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

সম্পাদনা করুন: ইনপুটটি যে কোনও পছন্দসই বিন্যাসে নেওয়া যেতে পারে যা আপনার ভাষার পক্ষে সবচেয়ে উপযুক্ত। ইনপুটটি সর্বদা একটি প্রাকৃতিক সংখ্যা হবে (0 সহ) এবং এতে শীর্ষস্থানীয় 0 থাকে না।

প্রাসঙ্গিক OEIS এন্ট্রি (A057846) @ ডোমহাস্টিংস দ্বারা পাওয়া


1
আমি কি স্ট্রিং হিসাবে একটি নম্বর নিতে এবং একটি স্ট্রিং আউটপুট করতে পারি?
থ্রিএফএক্স

1
@ নিমিমি 00....
21

5
আপনি ইনপুটটি দশমিকের মধ্যে রয়েছে তা নির্দিষ্ট করতে চাইতে পারেন বা আনরি ব্যবহার করে আপনি কিছু চটকদার উত্তর পাবেন ...
মার্টিন ইন্ডার

6
এটি কিছুটা বিভ্রান্তিকর: আপনি মন্তব্যগুলিতে লিখেছিলেন যে আপনি কোনও সংখ্যার ধরণের ফাংশনের ইনপুট এবং আউটপুট হিসাবে প্রত্যাশা করেছেন, তবে এটির পরিবর্তে ফলাফলটি মুদ্রণ করা ঠিক আছে। সুতরাং, যদি আউটপুট হয় 849, তার মানে কি আমাদের 849স্ট্রিং নয় তবে নম্বর প্রিন্ট করার অনুমতি দেওয়া হচ্ছে "849"? আইএমও এটি পুরোপুরি সূক্ষ্ম চ্যালেঞ্জের শীর্ষে কেবল একটি জটিল I / O ফর্ম্যাট (খারাপ!)।
লিন

1
শীর্ষস্থানীয় শূন্যগুলি তাৎপর্যপূর্ণ বা না? যেমন 001আউটপুট কি ? যদি সেগুলি তাৎপর্যপূর্ণ হয় এবং ফলাফলটি না হয় তবে 1বেশিরভাগ ভাষায় স্ট্রিংয়ের প্রয়োজন হবে সরল সত্যের জন্য এটি অপরিশোধিত, অযৌক্তিক এবং সাধারণত 10 টি আক্ষরিক সংখ্যায় শীর্ষস্থানীয় শূন্যগুলি পার্সারকে জিজ্ঞাসা করতে অসম্ভবের কাছে আসে।
বিড়াল

উত্তর:


12

পার্ল 6 ,  32  28 বাইট

{+[~] .comb.sort: *.Str.uniname}
{+[~] .comb.sort: *.uniname}

ব্যাখ্যা:

{
  # turn the following into a Numeric
  +

  # fold the following list using string concatenation operator
  [~]

    # split $_ into individual characters
    # (implicit method call on implicit parameter)
    .comb

    .sort:
    *.uniname # sort by the Unicode name of the character (digit)
}

টেস্ট:

#! /usr/bin/env perl6
use v6.c;
use Test;

my @tests = (
  101 => 110,
  31948 => 84913,
  5544 => 5544,
  1234567890 => 8549176320,
);

# give the lambda a lexical name for clarity
my &int-sort = {+[~] .comb.sort: *.uniname}

plan 3 * @tests;

for @tests -> $_ ( :key($input), :value($expected) ) {
  put '';
  isa-ok $input, Int, "input ($input) is an Int";

  my $output = int-sort $input;

  is $output, $expected, .gist;
  isa-ok $output, Int, "output ($output) is an Int"
}
1..12

ok 1 - input (101) is an Int
ok 2 - 101 => 110
ok 3 - output (110) is an Int

ok 4 - input (31948) is an Int
ok 5 - 31948 => 84913
ok 6 - output (84913) is an Int

ok 7 - input (5544) is an Int
ok 8 - 5544 => 5544
ok 9 - output (5544) is an Int

ok 10 - input (1234567890) is an Int
ok 11 - 1234567890 => 8549176320
ok 12 - output (8549176320) is an Int


8

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

একই চর গণনা সম্পাদনা করুন তবে বৈশ্বিক চলক এড়ানো হচ্ছেz

স্ট্রিং হিসাবে ইনপুট / আউটপুট

n=>[...n].sort((a,b)=>n[a]-n[b],n='9487216503').join``

পরীক্ষা

f=n=>[...n].sort((a,b)=>n[a]-n[b],n='9487216503').join``

function test() {
  O.textContent=f(I.value)
}

test()
<input id=I type=number value=31948 oninput='test()'>
<pre id=O></pre>


2
স্ট্রিংয়ের সূচক হিসাবে ইনপুট অঙ্কগুলি ব্যবহার করে এটি পছন্দ করুন z...
ডম হেস্টিংস

6

হাস্কেল, 62 51 44 বাইট

@ নিমিমি যেমন পরামর্শ দিয়েছেন, তালিকান উপলব্ধিগুলি রচনা ফাংশনগুলির চেয়ে কম:

f x=0+read[a|a<-"8549176320",b<-show x,a==b]

রেফারেন্সের জন্য আমার সংস্করণ:

f n=read.(=<<)(\x->filter(==x)$show n)$"8549176320"

পয়েন্টফ্রি সংস্করণটি কিছুটা দীর্ঘ:

f=flip(read.)"8549176320".(=<<).flip(filter.(==)).show

সোজাসুজি: সঠিক ক্রমে অঙ্কগুলি ফিল্টার করুন এবং তারপরে ফলাফলটি সংক্ষেপণ করুন।


5

পাইথ, 12 10 বাইট

ox`C" Ȁ\0

এটি আরও গল্ফ করা যায় কিনা তা নিশ্চিত নয়। ইনপুটটি উদ্ধৃতিতে আবদ্ধ হওয়া দরকার।

2 আইটেম সংরক্ষণ করা হয়েছে

পাইথোনিক সিউডোকোডে:

                Q = input()
o          Q    sort(Q, key = lambda N:
  `C" Ȁ\0        repr(base256toDec(" Ȁ\0"))
 x        N         .index(N)     # 8 being absent from the number yields -1
                )

এটি এখানে পরীক্ষা করুন


@ বুসুকক্সুয়ান আমিও 14 বাইট পেয়েছি : পি।
আদনান

@ আদনান তখন সংখ্যায় ফিরে যান। মনে হচ্ছে এই সংখ্যাগুলি সংকোচনের কোনও উপায় নেই ...
বুসুক্সুয়ান

2
প্রতিস্থাপন 2 বাইট সংরক্ষণ 549176320সঙ্গেC" »Ä\0
isaacg

ধন্যবাদ! আমি এটি কয়েকবার 256 বেসে রূপান্তরিত করার চেষ্টা করেছি কিন্তু ফলাফলটি ভুল ছিল। আপনি কিভাবে এটি সঠিকভাবে করেছেন?
বুসুক্সুয়ান

1
আপনাকে নাল বাইটগুলি প্রতিস্থাপন করে পালাতে হবে \0। আপনার সম্ভবত এটিই সমস্যা ছিল।
isaacg

4

পার্ল, 37 বাইট

36 বাইট কোড + 1 বাইট কমান্ড লাইন (-F)

say sort{8549176320=~/$b.*$a/||-1}@F

ব্যবহারের উদাহরণ:

echo -n "04823" | perl -F -M5.010 entry.pl


3

জেলি, 11 বাইট

“U1°ŀ”OṾf@€

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

ব্যাখ্যা

“U1°ŀ”O       Get the Unicode ordinals of “U1°ŀ”
                (all of which are coincidentally single bytes
                in the Jelly code page!)
              The result is [85, 49, 176, 320].
       Ṿ      Uneval. This gets us the string “85,49,176,320”.
        f@€   For each char in this string, extract all chars
                from the first command line argument that
                equal it.

3

ম্যাথমেটিকা 35 78 47 বাইট

31 বাইট সংরক্ষিত LIAMNYP এর একটি পরামর্শের জন্য ধন্যবাদ!

FromDigits@SortBy[IntegerDigits@#,IntegerName]&

IntegerDigitsসংখ্যাটি অঙ্কে বিভক্ত করে দেয় যা পরে তাদের নাম অনুসারে ইংরেজিতে সাজানো হয়। FromDigitsসংখ্যাগুলি বেস -10 সংখ্যায় একত্রিত করে।


FromDigits@SortBy[IntegerDigits@#,IntegerName]&[1234567890]

8549176320


"SortBy" ব্যবহার করে শব্দগুলিকে আবার অঙ্কগুলিতে রূপান্তর করতে আপনার সমস্যা নেই। FromDigits@SortBy[IntegerName]@IntegerDigits@#&
LLlAMnYP

এছাড়াও Interpreterবেদনাদায়কভাবে ধীর, তাই এটি একটি যুক্ত বোনাস।
LLlAMnYP

কল্পনাপ্রসূত উন্নতি।
ডেভিডসি

Mtmca এ 11 বাইট, যখনই এটি অস্তিত্বশীল।
মাইকেল স্টার্ন

3

সি, 142 141 117

যেমন প্যারামিটার পাস long long *করতে f(); ফাংশন প্যারামিটারটি পরিবর্তন করে:

f(long long*n){char*c="8549176320",g[10]={0};for(;*n;*n/=10)++g[*n%10];for(;*c;++c)for(;g[*c-48]--;*n=*n*10+*c-48);}

long longবাছাইয়ের পরে যখন শেষ পরীক্ষার কেসটি উপচে পড়েছিল intতখন থেকেই এটি প্রয়োজনীয় ।


2

পাইথন 2 - 95 বাইট

def s(n):
    l=list("8549176320")
    return "".join(sorted(list(n),key=lambda x: l.index(x)))

আরও গল্ফ করার চেষ্টা করা হচ্ছে ... আমার মনে হয় 2 লাইনটি অপ্রয়োজনীয় এবং এটি 1 ল্যাম্বডায় পরিণত হতে পারে।

সম্পাদনা করুন: মন্তব্যে 49 টি চরিত্রের সংস্করণ, thx থেকে xnor এবং সহায়তার জন্য ভল্টাহ।


lambda n:''.join(sorted(`n`,key="8549176320".find))
ভোল্টাহ

4
@ ভালাতাহ ভাল সমাধান, আপনি এটি পোস্ট করা উচিত! আমি মনে করি আপনি 8যাতে বাদ দিতে পারেন যাতে findদেয় -1 দেয়।
xnor

1
ওহ যে চতুর @ এক্সনোর। আমার কাছে সবচেয়ে সংক্ষিপ্ততমটি এটি ছিল lambda n: "".join(sorted(n,key="549176320".find))যা আপনার পরামর্শ অনুসারে সত্যিই অনুরূপ, ভল্টাহ। আপনার এটি পোস্ট করা উচিত!
জেরেমি 21

1
@ জেরেমি আপনার সেই সংস্করণটি আপনার পোস্টে সম্পাদনা করা উচিত।
ডিজেএমসিএমহেম

2
কমপক্ষে অতিরিক্ত অতিরিক্ত সাদা স্থান থেকে মুক্তি পান ... একক স্থান দিয়ে ইন্ডেন্টেশন করা যেতে পারে। এছাড়াও এটি অবৈধ, কারণ ওপি বলেছে যে আউটপুট অবশ্যই একটি সংখ্যার প্রকারের হবে।
মেগো

2

- ওরাকল 11 (এসকিউএল): 164 বাইট

  SELECT LISTAGG(DECODE(s,0,'zero',TO_CHAR(TO_DATE(s,'j'),'jsp')),',')WITHIN GROUP(ORDER BY 1)FROM(SELECT SUBSTR(&1,level,1)s FROM dual CONNECT BY LEVEL<=LENGTH(&1));

দীর্ঘ ফর্ম এবং ব্যাখ্যা

  SELECT LISTAGG(DECODE(s,0,'zero',TO_CHAR(TO_DATE(s,'j'),'jsp')),',') WITHIN GROUP (ORDER BY 1)
  FROM ( SELECT SUBSTR(&1,level,1)s FROM dual
           CONNECT BY LEVEL <= LENGTH(&1)
        );

স্ক্রিপ্টের প্যারামিটার হিসাবে ইনপুট পান:

  SELECT &1 FROM dual

ইনপুট দৈর্ঘ্যের উপর ভিত্তি করে সংযোগ ব্যবহার করে সারিগুলি "তৈরি করুন":

  CONNECT BY LEVEL <= LENGTH(&1)

প্রতিটি পজিশনের জন্য স্ট্রিং থেকে প্রতিটি অঙ্ক ছড়িয়ে দিন:

  SELECT SUBSTR(&1,level,1)s FROM dual

অঙ্কটি জুলিয়ান তারিখে রূপান্তর করুন এবং বানান পেতে চরে ফিরে যান:

  TO_CHAR(TO_DATE(s,'j'),'jsp')

শূন্যের জন্য পরীক্ষা করুন - বিশেষ ক্ষেত্রে।

  DECODE(s,0,'zero'

সারিগুলিকে একক সারির তালিকায় ফিরিয়ে আনতে LISTAGG ফাংশনটি ব্যবহার করুন, কমা বিস্মৃত, বর্ণানুক্রমিকভাবে আদেশ করা

  LISTAGG(DECODE(s,0,'zero',TO_CHAR(TO_DATE(s,'j'),'jsp')),',') WITHIN GROUP (ORDER BY 1)

এই জাতীয় জিনিসের জন্য এসকিউএল টুইঙ্ক করার চেষ্টা করা সর্বদা মজাদার ... :) সত্যই আমার বাগারের জ্ঞান পরীক্ষা করে ...



1

র‌্যাকেট, 142 130 বাইট

(λ(n)(string->number(list->string(sort(string->list(~a n))char<? #:key(λ(m)(string-ref "9487216503"(-(char->integer m)48)))))))

যার ধর্মান্তর হয় তুলনায় আরো প্রায় অর্ধেক দৈর্ঘ্য (এর 76 64 বাইট)।


(+ 1 answer)র‌্যাকেটের জন্য!
বিড়াল

@ ক্যাটটি র‌্যাকেটটি অনুশীলন করা আমার পক্ষে দরকারী, যেহেতু আমার সহকর্মীরা রেখে যাওয়া এই ভয়াবহ পদ্ধতিগত লেগ্যাসি জাভা (এবং কিছুটা কম-লেগ্যাসি পাইথন) প্রোগ্রামগুলিতে কাজ করার সময় ক্রিয়ামূলক প্রোগ্রামিং জ্ঞান বজায় রাখার একটি উপায়। আমি কীভাবে অবজেক্টগুলি থাকার কারণে কোনও প্রোগ্রামকে বস্তু-ভিত্তিক করে তোলে না তা নিয়ে কৌতুক করতে পারি, তবে তা না করে আমি কেবল আমার সমস্যাগুলি র্যাকেটে গল্ফ করে রাখব।
স্টিভেন এইচ।

হুম ... আমি অবশ্যই সহানুভূতিশীল, এবং কার্যকরী পাইথন লিখতে এটি সম্ভব এবং মজাদার, তবে জাভার স্রেফ ফাউফুল। সম্ভবত আপনি আপনার উচ্চ পদস্থ আধিকারিকদের প্রয়োগের জন্য স্কালা এবং জাভা ঠিক আঠালো হিসাবে ব্যবহার করতে পারেন get :)
বিড়াল

যাইহোক, যদি আপনি ফোর্থ পছন্দ করেন এবং আপনার চোখের ভিতর থেকে লিস্পটি পড়ে কিছুটা ক্লান্ত হয়ে পড়ে তবে আপনার ফ্যাক্টরটি পরীক্ষা করা উচিত যা লিস্প এবং সিএলওএস তবে ফোর্থ-ওয়াই পোস্টফিক্স এবং বিন্দু মুক্ত ছদ্মবেশে।
বিড়াল

1

টিএসকিউএল, 260 বাইট

দৈর্ঘ্যের রেফারিং এড়াতে কিছু বাইট সংরক্ষণ করতে বিপরীত বুদ্বুদ সাজানোর জন্য ব্যবহৃত হয়

Golfed:

DECLARE @ varchar(99)=101

,@i INT=99,@j INT=98WHILE @i>1SELECT
@=IIF(CHARINDEX(x,'598327614')>CHARINDEX(y,'598327614'),STUFF(STUFF(@,@j,1,x),@i,1,y),@),@i-=IIF(@j=1,1,0),@j=IIF(@j=1,@i,@j-1)FROM(SELECT
SUBSTRING(@,@i,1)x,SUBSTRING(@,@j,1)y)z
PRINT @

Ungolfed:

DECLARE @s BIGINT=1234567890

DECLARE @ char(99)=@s,@i INT=99,@j INT=98
WHILE @i>1
  SELECT 
    @=IIF(CHARINDEX(x,'236719458')>CHARINDEX(y,'236719458'),
        STUFF(STUFF(@,@j,1,x),@i,1,y),@), 
    @i-=IIF(@j=1,1,0),
    @j=IIF(@j=1,@i,@j-1)
  FROM(SELECT SUBSTRING(@,@i,1)x,SUBSTRING(@,@j,1)y)z
PRINT CAST(@ as bigint)

ইনপুট এবং আউটপুট হিসাবে পূর্ণসংখ্যার প্রকারের ব্যবহারের জন্য জোর দিয়ে 37 বাইট যুক্ত করা হয়েছে


DECLARE @ varchar(99)=1010.o 101স্বয়ংক্রিয়ভাবে একটি স্ট্রিং পরিণত হবে?
বিড়াল

এছাড়াও, stuffএকটি উদ্দেশ্যমূলক ভয়ঙ্কর ফাংশন নাম। squashবা shoveবা packআরও ভাল হতে পারে: পি
বিড়াল

@ কেট হ্যাঁ, এটি একটি স্ট্রিংয়ে স্বয়ংক্রিয়ভাবে রূপান্তরিত হয়ে যায়, তবে তা বিবরণী অনুসারে প্রতারণা করা হবে। আমি সম্মত,
স্টাফগুলি

1
আমার অর্থ, আমরা পাশাপাশি প্রতিটি ফাংশনকে কল stuffকরতে পারি যা ফাংশনগুলি তাই করে: তারা স্টাফ করে। তারপরে আপনার কোডটি দেখতে পাওয়া যাবেstuff(stuff(4, 5, stuff), stuff(stuff()).(stuff())()); stuff(stuff)
বিড়াল

1

ClojureScript, 45 বাইট

#(apply str(sort-by(vec"9487216503")(str %)))

জাভাস্ক্রিপ্ট থেকে ফাঁস হয়ে যাওয়ার জন্য কিছু স্ক্রু স্ট্রিং-> ইন্ট রূপান্তর ব্যবহার করে, সুতরাং এটি বৈধ Clojure নয়।


1

ফায়ার বার্ড, 317 বাইট

Golfed:

select list(s,'')from(with recursive q as(select 1 p,substring(:a from 1 for 1)s from rdb$database q union all select q.p+1 p,substring(:a from q.p+1 for 1)s from q where q.p<char_length(:a))select s from q order by iif(s=8,0,iif(s=5,1,iif(s=4,2,iif(s=9,3,iif(s=1,4,iif(s=7,5,iif(s=3,7,iif(s=2,8,iif(s=0,9,6))))))))))

Ungolfed:

select list(s, '')
from (
   with recursive q as (
      select 1 as p, substring(:a from 1 for 1) s
      from rdb$database q
      union all
      select q.p + 1 as p, substring(:a from q.p + 1 for 1) as s
      from q
      where q.p < char_length(:a)
   )
   select s
   from q
   order by iif(s = 8, 0,
               iif(s = 5, 1,
                  iif(s = 4, 2,
                     iif(s = 9, 3,
                        iif(s = 1, 4,
                           iif(s = 7, 5,
                              iif(s = 3, 7,
                                 iif(s = 2, 8,
                                    iif(s = 0, 9, 6)))))))))
)

ফায়ারবার্ডে কোনও বিভক্ত কার্যকারিতা নেই। পরিবর্তে আমি পরবর্তী চরিত্রটিকে বারবার পেতে পুনরাবৃত্ত ক্যোয়ারী তৈরি করেছি। তারপরে আমাদের যথাযথ ক্রম অনুসারে বাছাই করার সময় সেগুলি পুনরায় নির্বাচন করুন। পরিশেষে এই ফলাফলগুলি এক তালিকায় আবার একত্রিত করুন। ফাঁকা দিয়ে ডিফল্ট কমা ডিলিমিটার ওভাররাইড করুন। আমি তার পরিবর্তে একটি নতুন ডামি টেবিল তৈরি করে 11 বাইট সংরক্ষণ rdb$databaseকরতে পারি তবে আমি ভেবেছিলাম এটি নিয়মের বিরুদ্ধে হতে পারে।


1

জেডএক্স স্পেকটাম, মেশিন কোড, 53 48 47 45 44 বাইট

    org 49200 ; #c030

; table converts ascii to alfabetical order
; start from BASIC with any number as : PRINT "1234567890" AND USR 49208

convtab defb 249 ; zero defb 244 ; one defb 248 ; two defb 247 ; three defb 2+205 ; four defb 1+205 ; five defb 246 ; six defb 245 ; seven ; defb 0 ; eight ; defb 3 ; nine ; last 2 conversions hidden in call-command

start Call #2bf1    ; fetch stackindex
    call #2ab2 ; store back
    ld h,#c0    ; set highbyte of table


Sort Push de
loop ld b,d
    ld c,e
    inc de
    ld a,(bc)   ; fetch number
    Ld l,a
    ld a,(de)
    cp 34       ; endmarker "
    Jr z,exit   ; end reached?
    push hl     ; save number
    ld l,a
    Ld a,(hl)   ; convert second number
    pop hl
    cp (hl)     ; compare numbers
    jr nc,loop  ; in order, no swap
swap ld a,(bc)  ; swap original numbers
    ld l,a
    ld a,(de)
    ld (bc),a
    ld a,l
    ld (de),a
Exit pop de
    Ret z
    jr sort     ; check number for order


জিনোম-সাজানোর মাধ্যমে এটি ছোট করা যেতে পারে এবং টেবিলটি 1 বাইট ছোট হতে পারে। নতুন সংস্করণ আসবে ...
জোহান কোয়েলম্যান

এখানে জিনোম-বাছাই দীর্ঘ, তবে অন্যান্য অপ্টিমাইজেশন।
জোহান কোয়েলম্যান

0

ফ্যাক্টর, 128

[ 10 base> [ 48 - ] { } map-as dup [ number>text ] map zip [ second first ] sort-with [ first ] map [ 48 + ] ""map-as 10 >base ]

বিল্টিনের জন্য হুর! : ডি


0

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

যতদূর আমি জানি পিএইচপি-তে কোনও বিল্টিন নেই যা এটির সাথে সত্যিই সাহায্য করবে (একটি ইউর্ট (টিআর_স্প্লিট ()) 5 বাইট বেশি দীর্ঘ ব্যবহার করে আমি সবচেয়ে ভাল করতে পেরেছিলাম) তাই আমি এই উত্তরের মধ্যে কেবল খুশিই তা হ'ল খেলাগুলি $ i এর সাথে খেলেছে ইন্টেরেশনটিতে কয়েকটা বাইট সংরক্ষণ করতে।

<?php for($i=-1;$i<9;)$a[++$i]=preg_replace("/[^$i]/","",$argv[1]);array_multisort([9,4,8,7,2,1,6,5,0,3],$a);echo implode($a);

0

এপিএল, 23 বাইট

{⍎n['8549176320'⍋n←⍕⍵]}

ব্যাখ্যা:

  • n←⍕⍵: এর স্ট্রিং প্রতিনিধিত্ব পান nএবং এতে সঞ্চয় করুনn
  • '8549176320'⍋: অর্ডার প্রদত্ত nযে প্রকারের একটি ক্রম সন্ধান করুন ।n8549176320
  • n[... ]: সেই অনুমানের nমাধ্যমে পুনঃক্রম করুন
  • : ফলাফলটি মূল্যায়ন করুন (এটিকে আবার কোনও সংখ্যায় পরিণত করতে)

যেহেতু I / O স্ট্রিং হতে পারে তাই আপনি মুছে ফেলতে পারেন এবং । সরিয়ে tradfn রূপান্তর {এবং }এবং বদলে জন্য । শেষ 0n['854917632'⍋n←⍞]
অবধি

0

Clojure, 53 বাইট

ভাল, হাস্কেল সমাধান থেকে তালিকা বোঝার ধারণাটি সবচেয়ে কম বলে মনে হচ্ছে:

#(apply str(for[p"8549176320"b(str %):when(= p b)]p))

আমার আসল পদ্ধতিটি 1 বাইট দীর্ঘ:

#(apply str(sort-by(zipmap"549176320"(range))(str %)))

আপনি উভয় ফাংশন অনলাইনে এখানে দেখতে পাবেন: https://ideone.com/afac5n


0

কমন লিস্প, 104

(lambda(n)(#1=parse-integer(sort(format()"~A"n)'string<= :key(lambda(u)(format()"~R"(#1#(string u)))))))

Ungolfed

(lambda (n)
  (parse-integer
   (sort (format nil "~A" n)
         #'string<=
         :key (lambda (u) (format nil "~R" (parse-integer (string u)))))))

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


0

পাইথন 3, 234 বাইট

এটি আমার ফ্যাক্টরের উত্তরের সরাসরি অনুবাদ , কেবল মজাদার জন্য।

def f(n):
 s=list(map(int,str(n)))
 return int("".join(list(map(str,list(map(lambda x:x[1],sorted(list(zip(list(map(lambda t:{0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[t],s)),s)))))))))

"অলস" মানচিত্র এবং জিপ অবজেক্টের মূল্যায়নের শব্দার্থবিজ্ঞান হ'ল মহাবিশ্বের আসল ঘোড়ার নিঃসরণের সবচেয়ে সূক্ষ্ম হার্ড-টু-ফাইন্ড-বাগ-ইন্ডাক্সিং টুকরা। কখনও কখনও, সঠিকভাবে বা একেবারে ব্যবহার s = map(f, x)করতে দেওয়া হবে না s



0

সি, 80 বাইট

বেস 10 তে একটি সংখ্যাযুক্ত একটি স্ট্রিং নেয় এবং এতে প্রিন্ট করে stdio:

F(char*i){for(char*p,d,*o="8549176320";*o;++o)for(p=i;d=*p++;d-*o||putchar(d));}

0

পাইথন 2.7.11, 67 বাইট

lambda n:''.join(sorted(list(n),key=lambda s:"9487216503"[int(s)]))

ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং একটি স্ট্রিং আউটপুট দেয়।


0

পাইথন 3, 74 বাইট

lambda x:''.join(i[1]for i in sorted(['9487216503'[int(j)],j]for j in x))

ল্যাম্বডা ব্যবহার করে আপনি কিছু বাইট সংরক্ষণ করতে সক্ষম হতে পারেন
ড্যানিয়েল

0

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

function($a){usort($a,function($a,$b){return($z=array_flip([8,5,4,9,1,7,6,3,2,0]))[$a]-$z[$b];});return$a;}

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

বাছাইয়ের ক্রমটি সামঞ্জস্য করতে একটি ব্যবহারকারী-সংজ্ঞায়িত তুলনা ফাংশন ব্যবহার করে।

আউটপুট

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