বাছাই-এ-সংখ্যা। Sorta


19

অ্যান -অ্যারে ব্যবহার ছাড়াই অদ্ভুত সাজানোর-সংখ্যার সংখ্যাগুলি দ্বারা অনুপ্রাণিত , কিন্তু আমি ভেবেছিলাম এটি এসও প্রশ্নের চেয়ে আরও ভাল কোড গল্ফ তৈরি করেছে।

ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে, সেই সংখ্যায় অঙ্কগুলি সাজান।

সর্বনিম্ন স্কোর জয়!

  1. 0 পয়েন্ট দিয়ে শুরু করুন।
  2. অক্ষর প্রতি একটি পয়েন্ট যোগ করুন।
  3. আপনার ব্যবহৃত প্রতিটি অ্যারের জন্য 20 পয়েন্ট যুক্ত করুন।
  4. আপনার কোডে প্রতিটি বহু-চরিত্রের স্ট্রিংয়ের জন্য 10 পয়েন্ট যুক্ত করুন। (প্রাথমিক ইনপুট ব্যতীত অন্য কোনও অপারেশন না করে যতক্ষণ না এটি পূর্ণসংখ্যায় রূপান্তরিত হয়))
  5. 32 টি পয়েন্ট যুক্ত করুন যদি আপনার প্রোগ্রামটি পরিচালনা করতে পারে এমন সর্বাধিক সংখ্যক সংখ্যাটি আপনার প্রোগ্রামের (মেশিনের বিপরীতে) সীমাবদ্ধ রয়েছে।
  6. যদি আপনার কোডটি অন্য কোনও যুক্তি প্রদত্ত বাছাইয়ের দিক পরিবর্তন করতে পারে তবে 10 পয়েন্ট বিয়োগ করুন (উদাহরণস্বরূপ 0 অবতীর্ণ সাজানোর জন্য এবং 1 আরোহণের জন্য।)

প্রতিটি ভাষা আলাদা, তবে ধারণাটি হ'ল কোনও ধরণের পুনরাবৃত্ত-অঙ্কের হ্যাকারি এড়ানো।

উদাহরণ:

ইনপুট : 52146729

আউটপুট : 97654221 বা 12245679

মন্তব্য:

  1. আপনার প্রোগ্রামিংয়ের ভাষা সরবরাহ করে এমন কোনও বিল্ট-ইন বাছাইয়ের ক্ষমতা ব্যবহার করুন, তবে যদি সেই সাজানোর বৈশিষ্ট্যে স্ট্রিং বা অ্যারে জড়িত থাকে তবে শাস্তি নিন!
  2. আপনি সমাধানটি কোনও ফাংশন হিসাবে সরাসরি লিখতে পারেন যা সরাসরি কোনও পূর্ণসংখ্যার গ্রহণ করে বা এমন একটি প্রোগ্রাম হিসাবে যা আরগভি, একটি ফাইল বা স্ট্রিমের কাছ থেকে একটি যুক্তি নেয় এবং এটি একটি পূর্ণসংখ্যায় রূপান্তর করে। যতক্ষণ আপনি এটিকে অবিলম্বে একটি পূর্ণসংখ্যায় রূপান্তর করেন এবং এর উপর আর কোনও ক্রিয়াকলাপ না করে মূল চর * ইনপুট বাতিল করেন, কোনও জরিমানা প্রযোজ্য নয়।
  3. পেনাল্টিগুলি কেবল আপনার প্রোগ্রামের পাঠ্যের স্ট্রিং লিটারালগুলিতেই প্রযোজ্য নয়, তবে আপনার প্রোগ্রামের বৈশিষ্ট্যের কোনও অংশ যা যুক্তিযুক্তভাবে স্ট্রিং বা পুনরাবৃত্তিকে ইনপুট বা আউটপুট দেয়। উদাহরণস্বরূপ, জাভাস্ক্রিপ্টের String.prototype.splitইনপুট হিসাবে কমপক্ষে একটি স্ট্রিং রয়েছে ( this) এবং আউটপুট হিসাবে একটি অ্যারে, সুতরাং এটি ব্যবহারের জন্য +30।
  4. আমি এই নিয়মগুলিকে প্রাথমিক / চূড়ান্ত আই / ও নয়, তবে অ্যালগোরিদম ডিজাইনের নীতিতে গাইড করার চেষ্টা করেছি (অতএব নোট # 2) note আমি মনে করি না যে জরিমানার প্রযোজ্য হওয়া উচিত int(input())এমনকি এমনকি যদি inputস্বাক্ষরটি বলে যে এটি একটি স্ট্রিং ফিরিয়ে দেয়, যতক্ষণ না এই অভিব্যক্তিটি প্রোগ্রামটির প্রাথমিক প্রবেশ পয়েন্ট । তেমনিভাবে, যদি প্রোগ্রামটির চূড়ান্ত আউটপুট হয় print(x)এবং এটি xঅবশ্যই একটি স্ট্রিং হয়, তবে শেষের খাদের স্ট্রিং ingালাইয়ের ক্রিয়াকলাপের জন্য পেনাল্টি প্রযোজ্য নয়। যা কিছু বলেছিল, আমি স্পষ্টভাবে কখনও বলিনি যে এটি কোনও প্রোগ্রাম হতে হবে বা যেখানে I / O থেকে আসতে হবে বা যেতে হবে। এমন একটি ফাংশন যা গ্রহণ করে intএবং ফিরিয়ে দেয় intযা পরিবেশন করবে এবং এই অস্পষ্টতায় ভুগবে না।

1
না " "হিসেবে গণনা বহু অক্ষর স্ট্রিং? একটি একক চরিত্র "মাল্টি" হিসাবে বিবেচিত হবে না ...
ওলিওয়েস্ট

4
আমার কাছে স্লিপসোর্টের একটি সহজ বাস্তবায়নের মতো বলে মনে হচ্ছে।
ব্যবহারকারী 12205

1
আপনি ভাষা বাছাই মজাদার নিষেধ করবেন না।
ব্যবহারকারী 80551

1
আমি অন্তর্নির্মিত ফাংশন সম্পর্কে আরও ভাল নিয়ম লিখতে চাই, শাস্তিও খুব কম: এটি বিকল্প (সম্ভবত দীর্ঘতর) পদ্ধতির পরিবর্তে অ্যারের ব্যবহারকে উত্সাহিত করে।
আন্তোনিও রাগাগনিন

1
@ অ্যান্টোনিওআ্যাগাগনিন আমি পোস্টের আগে পেনাল্টিগুলি পরিবর্তন করতে চাইনি, তবে বিল্ট-ইন ফাংশনগুলির নিয়মগুলি স্পষ্ট করে দিয়েছি।
কোজিরো

উত্তর:


13

গল্ফস্ক্রিপ্ট, 11 4

(4 + 10 (স্ট্রিং) - 10 (বিপরীত বিকল্প))

STDIN এ ইনপুট।

~`$%

ইনপুট ফর্ম্যাটটি হ'ল:

(1 or -1) (the number)

1সাধারণত সাজানো, -1বিপরীত। 4 টি অক্ষর - বিপরীত বিকল্পের জন্য 10 = -6 এর স্কোর।

ইনপুটটি প্রযুক্তিগতভাবে একটি স্ট্রিং, সুতরাং আমি এটি নিশ্চিত নই যে এটি +10 এর জন্য গণনা করা হয়েছে। আমি বিধিটিকে "আপনার প্রোগ্রামে ঘোষণা করা স্ট্রিং" হিসাবে ব্যাখ্যা করছি (যেহেতু এটি "আপনার কোডে" বলে)।


পুরানো উত্তর (11 এর স্কোর):

$

3
স্ট্রিংগুলি জিএসে প্রযুক্তিগতভাবে অ্যারে হয়, কেবল স্কোরিং বিতর্ককে জটিল করতে।
পিটার টেলর

হ্যাঁ, একটি স্ট্রিংয়ের ইনপুট (এটি তাত্ক্ষণিকভাবে পূর্ণসংখ্যায় রূপান্তরিত হয় না) +10 হয়।
কোজিরো

@ কোজিরো ~অবিলম্বে পূর্ণসংখ্যায় রূপান্তরিত করে। তবে তারপরে এটি আবার স্ট্রিংয়ে রূপান্তরিত হয় `। একটি স্ট্রিং গণনায় রূপান্তর না? কারণ কখনও কখনও স্ট্রিংটি মাল্টিচ্যার্যাক্টর নাও হতে পারে (1 ডিজিট ইনপুট)
ডোরকনব

হ্যাঁ, ফাংশন (বা যাই হোক না কেন) কেবলমাত্র একটি-অক্ষরযুক্ত স্ট্রিং আউটপুট করতে না পারলে স্ট্রিংয়ে রূপান্তরিত হয় । এটি ফাংশনের স্বাক্ষর বা ডকুমেন্টেশনের ভিত্তিতে মূল্যায়ন করা উচিত। যদি এটি একটি চরিত্রের (যেমন chr) আউটপুট দেওয়ার জন্য ডিজাইন করা থাকে তবে এটি ঠিক আছে।
কোজিরো

14

হাসেল 106

t=10;d=divMod;s z|z<w z=s$w z|t>0=z
w x|x<t=x|y>z=(q*t+y)*t+z|t>0=y+t*(w v)where{(v,y)=d x t;(q,z)=d v t}

উদাহরণ:

ghci> s 502010406072952146729521467295214672952146729
999997777766666555554444422222222221111100000

একটি উত্তর যা প্রশ্নকে ডজ করে না।

একটি ব্যাখ্যা অনুরোধ করা হয়েছিল, এখানে এটি অসম্পূর্ণ। এটি একটি অত্যন্ত অদক্ষ বাবল বাছাই।

-- t=10 - alias for 10. d=divMod - alias for divMod.
-- The alias for '10' turns out to be unnecessary; inlining it
-- and using '1>0' for True has the same character count. It's
-- a relic of earlier versions of the code.

-- 's': if no digits need swapped, return the number,
-- otherwise return 's' applied to the number with
-- that pair of digits swapped.
sort z=
  let temp=sort_pair z
  -- because we are sorting in descending order,
  -- sorting a pair of digits always increases the number.
  -- testing > costs one less char than ==.
  if z<temp then
    -- golfed version uses guards instead of if/else to save space.
    -- t>0 is '10 > 0', which is 'True', in fewer chars.
    sort temp
  else
    z
-- 'w': recursively swap one pair of out of order digits, or
-- return the original number if no pairs needed swapped.
sort_pair x=
  -- haskell does the assignments below lazily, they aren't
  -- calculated unless I use them. 'divMod' lets me do this
  -- with fewer chars.
  let y = x `mod` 10 -- last digit
      v = x `div` 10 -- all but last digit
      z = v `mod` 10 -- second last digit
      q = v `div` 10 -- all but last 2 digits
  in
  if x < 10 then
    x
  else if y > z then
    -- last 2 digits are out of order. swap them & return
    -- This is rearranged using Horner's method to save space
    -- http://en.wikipedia.org/wiki/Horner%27s_method
    -- ... although it turns out not to save anything, it's a relic.
    (q * 10 + y)*10 + z
  else
    -- last digit is ok, so try sort_pair on remaining digits
    let temp = sort_pair v in
    -- put last digit back on the end and return
    -- having the bracketed expression last here
    -- let me remove a space before 'where'
    y+(10*temp)

সংক্ষিপ্ত উত্তরগুলি হ্যাসকেলে উপস্থিত রয়েছে, পোস্ট করা অন্য কয়েকটিটির সমতুল্য, যেমন:

import Data.List;s=read.sort.show::Integer->Integer

... স্কোর 52 + 20 = 72, বা এটি, 45 + 20 = 65 স্কোর করছে:

import Data.List;main=interact(reverse.sort)

... তবে প্রশ্নের স্পিরিট - কোনও অ্যারে, স্ট্রিং বা চরিত্রগুলি নয় - এটি আরও আকর্ষণীয়।


2
আপনি একটি ব্যাখ্যা যোগ করতে পারেন?
ব্যবহারকারী 80551

আপনি পূর্ণসংখ্যা ইনপুট আকার থাকার জন্য একটি বোনাস পয়েন্ট হ্রাস পাওয়া উচিত এমনকি সীমিত হচ্ছে মেশিন দ্বারা Haskell, এর অন্তর্নিহিত নির্বিচারে স্পষ্টতা পূর্ণসংখ্যার কারণে।
recursion.ninja

@ ওয়াশবার্ন ওয়েল, তিনি এটি পেয়েছেন (যেমন তিনি 32 পয়েন্ট যোগ করেননি!) এবং অনুমান করা হয়েছে , তাই আমি ( এখানে )
হাংরি ব্লু দেব

@ambigram_maker মনে হয় তিনি এর মানে হল যে পুলিশের উদাহরণস্বরূপ, না ইনপুট অধিক মাপের নিতে পারেন Integer.MAX_VALUE-এটা একটি লাগে int। খনি, এবং অন্যদের কিছু, যে কোনো আকারের ইনপুট-ইনপুট ধরণ গ্রহণ sহয় Integer, মধ্যে সমতুল্য BigDecimalজাভা। যদিও আমি এই প্রশ্নটি বোঝাতে চেয়েছি তা নয়, আমি ভেবেছিলাম এটি উত্তরকে শাস্তি দিচ্ছে যা কেবল একটি অঙ্কের সংখ্যা 'সাজান'।
বাজরাঘ

1
এটি সহজেই পরিবর্তিত হয়েছে। আমি এটি একটি বড় ব্যাপার মনে করি না।
বাজরঘ

13

সি + x86 বিধানসভা, 636

আমি জানি এটি জিততে পারে না তবে এটি এতটা অপ্রাকৃত এবং বাঁকা মনে হয়েছিল যে আমি এটি ভাগ করে নিতে হয়েছিল। কোনও অ্যারে বা স্ট্রিং নেই (যতক্ষণ না আপনি ইনপুট আর্গুমেন্ট গণনা করেন)। 32 বিটের পরিসীমা দ্বারা সীমিত সংখ্যার সংখ্যা।

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

আমি ভেবেছিলাম যে আমি কোনও অ্যারে বা স্ট্রিং ব্যবহার না করে এটি করব এবং তারপরে পুনরাবৃত্তি মনে আসল, তবে অবশ্যই পুনরাবৃত্তির সাথে আমি অন্যান্য পুনরাবৃত্ত কলগুলি থেকে মানগুলি অদল করতে সক্ষম হব না ... এবং তখনই যখন আমি বুঝতে পারি যে একটি উপায় ছিল। আমার সি প্রোগ্রামটিকে একটি অ্যাসেমবিলি ফাংশনের সাথে সংযুক্ত করে আমি স্ট্যাকের মধ্যে লাফিয়ে উঠতে এবং পছন্দসই কলটির বেস পয়েন্টারটিতে একটি পয়েন্টার ফিরিয়ে দিতে পারি, এটিই "recursionStackAt" ফাংশনটি করে। অবশ্যই রিকার্সনস্ট্যাকএটি একটি খুব কুৎসিত ফাংশন, এর ফলাফলটি কেবল ইনপুট বা প্রোগ্রামের অবস্থার উপর নির্ভর করে না তবে কলার নিজেই। নোট করুন যে এটাই আমাকে সূচকগুলি 0 থেকে 1 ভিত্তিতে পরিবর্তিত করেছে।

আরও অ্যাডো না করে এখানে কোডটি দেওয়া হয়েছে:

#include <stdio.h>
#include <stdlib.h>

int numberToSort;
int totalLength = 0;
int decreasing;

int* recursionStackAt(int pos); //Here's the magic

void swapAtStack(int pos1, int pos2) {
    int a = *(recursionStackAt(pos1)+3);
    *(recursionStackAt(pos1)+3) = *(recursionStackAt(pos2)+3);
    *(recursionStackAt(pos2)+3) = a;
}

int getAt(i) {
    return *(recursionStackAt(i)+3);
}

void printNumber(int len) {
    int i = 0;
    for(i = 1; i <= len; ++i) {
        printf("%d",*(recursionStackAt(i)+3));
    }
    printf("\n");
}

void computeNextDigit(int remainingNumber, int nextDigit) {

    if(remainingNumber == 0) {
        //Bubble sort cause I was lazy and it's quite compact
        ++totalLength;

        int i, j;

        for(i = 1; i <= totalLength; ++i)
            for(j = 1; j <= totalLength-1; ++j) {
                if(decreasing) {
                    if(getAt(j) > getAt(j+1)) 
                        swapAtStack(j,j+1);
                }
                else { 
                    if(getAt(j) < getAt(j+1))
                        swapAtStack(j,j+1);
                }
            }

        printNumber(totalLength);   
    }
    else {
        ++totalLength;
        computeNextDigit(remainingNumber/10, remainingNumber%10);
    }
}

int main(int argc, char* argv[]) {
    if(argc == 3) {
        numberToSort = atoi(argv[1]);
        decreasing = atoi(argv[2]);
    }
    else exit(1);
    computeNextDigit(numberToSort/10, numberToSort%10);
} 

এবং অবশ্যই x86 (এটিএন্ডটি সিনট্যাক্স, বিটিডাব্লু) পুনরাবৃত্তি স্ট্যাকএট ফাংশনের জন্য এসেম্বলি কোড:

.text
    .align 4
    .globl  recursionStackAt
    .type   recursionStackAt, @function
recursionStackAt:
        pushl %ebp
        movl %esp,%ebp
        pushl %esi
        movl $0, %esi #i = 0
        movl (%ebp), %eax #pointer
while:  
        cmp %esi, 8(%ebp)
        je endwhile
        movl (%eax),%eax
        incl %esi
        jmp while
endwhile:
        popl %esi
        movl %ebp, %esp
        popl %ebp
        ret

আউটপুট সম্পর্কে কিছু উদাহরণ: (1 অর্থ বৃদ্ধি এবং 0 হ্রাস)

$ ./sortasort 6543210 1
0123456
$ ./sortasort 32507345 1
02334557
$ ./sortasort 32507345 0
75543320

এখানে অস্পষ্ট সংস্করণটি (যা অপঠনযোগ্য তবে সূক্ষ্মভাবে কাজ করে):

http://pastebin.com/XkYt9DLy (সি কোড) http://pastebin.com/h0S0dfeU (x86 কোড)

সুতরাং যদি লিব্রিঅফিস আমার অবরুদ্ধ কোডটি মিথ্যা না করে থাকে তবে 646 টি অক্ষর (ফাঁকা ছাড়াই, আমি কি তাদের গণনা করব?) এবং অন্যান্য সমস্ত শর্ত পূরণ করে আমি Incresing / হ্রাস পছন্দ হিসাবে একটি -10 পেয়েছি।

ওহ, এবং এটি সংকলন করতে আপনার করা উচিত (ইউনিক্সের মতো সিস্টেমগুলিতে)

gcc -c [-m32] recursionStackAt.s 
gcc -o sortasort [-m32] sortasort.c recursionStackAt.o

মনে রাখবেন যে -m32 পতাকাটি কেবলমাত্র যদি আপনি একটি bit৪ বিট মেশিনে থাকেন। এটি সংকলন করতে আপনার 32 বিট গ্রন্থাগারও প্রয়োজন।


আমি মনে করি প্রয়োজনীয় সাদা স্থানটি সাধারণত গণনা করা হয়। অন্তত অপ্রয়োজনীয় শ্বেতক্ষেত্র ছড়িয়ে দেওয়ার পরে আমি কী করব। যার যার কাছে বল রয়েছে এমনভাবে এই স্ট্যাকের সাথে গোলমাল করার জন্য সে আমার উপার্জন পেতে পারে! +1
ডিজিটাল ট্রমা

9

বাশ (প্রতিধ্বনি) (0 + 7 + 0 + 0 + 32-10) = 29

Sorta:

echo $*

ব্যবহার:

sorta 5
5

বিপরীতে সাজানোর জন্য "-e" ব্যবহার করুন:

sorta -e 3
3
  • ধনাত্মক পূর্ণসংখ্যার 1-9, এবং 0 এর জন্য সঠিক ফলাফল উত্পাদন করে
  • কোনও ধরণের পুনরাবৃত্ত-অঙ্কের হ্যাকারি এড়ানো হয়
  • 7 টি অক্ষর (+7)
  • কোন অ্যারে
  • কোনও বহু-চরিত্রের স্ট্রিং নেই
  • এটি পরিচালনা করতে পারে এমন সর্বাধিক সংখ্যার: 1 (+32)
  • optionচ্ছিকভাবে সাজানোর বিপরীত করতে পারেন (-10)

সম্পাদনা: "বিড়াল "টিকে" প্রতিধ্বনি "তে পরিবর্তিত করা হয়েছে যাতে এটি আসলে কাজ করবে। সম্পাদনা 2: "$ *" যুক্ত এবং এটি "বাছাই" স্ক্রিপ্টে রেখেছেন


হা হা; দুর্দান্ত কৌশল, তবে এটি এখনও পর্যন্ত সমস্ত নিয়মের (এছাড়াও নিয়ম-নমন) উত্তরগুলির হারাতে সক্ষম উত্তর;)
ডোরকনব

4
পুরো জিনিসটি অনাবৃত; বাছাই কেন?
গ্লেন র্যান্ডার্স-পেহারসন

2
নিয়মের কিংবদন্তি অপব্যবহার। +1
ডিজিটাল ট্রমা

2
@ কোজিরো: উদাহরণস্বরূপ, -eবিপরীত আউটপুট জন্য আর্গুমেন্ট হিসাবে ব্যবহার করা যেতে পারে।
হাইকো ওবারডিক

4
কিছু মনে করবেন না, আপনি ঠিক বলেছেন, "-e" পাশাপাশি "" কাজ করবে। যদিও আমাকে ব্যবহারকারী ম্যানুয়ালটি আবার লিখতে হবে এবং পশ্চাদপটে সামঞ্জস্যের জন্য আমাকে গ্রহণ করা চালিয়ে যেতে হবে ""।
গ্লেন র্যান্ডার্স-পেহারসন

8

Python3

আমার স্ক্রিপ্ট বৈশিষ্ট্য:

কোনও অ্যারে নেই

কোন স্ট্রিং

জটিলতা হে (ঢ) হল: আমি countingsort ব্যবহৃত (আমার দ্বারা সংশোধিত অ্যারে ব্যবহার করবেন, কিন্তু মৌলিক সংখ্যার occourences গণনা)

আকারে কোনও সীমাবদ্ধতা নেই

অক্ষর: 260 234

n=int(input())
def C(n,k):
    return (n//(10**(k-1)))%10
P=lambda l:((((29-6*l%2,19-2*l%2)[l<9],13-2*l%2)[l<7],2*l-1)[l<5],2)[l==1]

p=1
while n>=1:
    c =C(n,1)
    p*=P(c+1)
    n=n//10
f=1
k=r=0
while p>2:
    if(p%P(f)==0):
        r+=(f-1)*10**k
        p=p//P(f)
        k+=1
    else: f+=1
print(r)

1
আমি ভুল হতে পারি, তবে আমি মনে করি আপনি কিছু চরিত্রগুলি শেভ করার জন্য সেই কয়েকটি গাণিতিকের আশেপাশে প্যারেনগুলি হারাতে পারেন।
কোজিরো

আমি সত্যিই এখানে primes ব্যবহার পছন্দ করি। এটা খুব অদ্ভুত । এছাড়াও, আমি মনে করি বেশ কয়েকটি চরিত্র শেভ করে Pলেখা যেতে পারে lambda l:((((29-6*l%2,19-2*l%2)[l<9],13-2*l%2)[l<7],2*l-1)[l<5],2)[l==1]। আমি এটিকে কিছুটা গণ্ডগোল করে থাকতে পারি, তবে ধারণাটি হল পুরানো-স্কুল পাইথন টেরিনারি (পাইথনের একটি বার্ষিকী হওয়ার আগে) এর নেস্টেড সংস্করণ ব্যবহার করা (false_result, true_result)[boolean]
কোজিরো

ইন্টারনেট থেকে র্যান্ডম লোক ধন্যবাদ! বিটিডাব্লু আমি এখন এটি দিয়ে মজা করছি, আপনার পছন্দ হয়েছে কিনা তা দেখার চেষ্টা করুন: কোডগল্ফ.স্ট্যাকেক্সেঞ্জিং.com
আন্তোনিও রাগাগনিন

7

বাশ + কোর্টিল, 14 (24 টি অক্ষর - 10 বিপরীতে)

আমি মনে করি এটি নিয়মগুলি কিছুটা বাঁকানো হতে পারে তবে এখানে শুক্রবার ...

আমি ধরে নিই যে স্ট্যান্ডার্ড লাইব্রেরি ব্যবহারের অনুমতি রয়েছে। এর জন্য স্ট্যান্ডার্ড লাইব্রেরির আমার ব্যাখ্যাটি bashহ'ল coreutils:

fold -1|sort $1|tr -d\\n
  • পরিবর্তে কোনও অ্যারে - স্ট্রিম ব্যবহার করা হয় না
  • কোন উদ্ধৃতি == কোনও বহু-চরিত্রের স্ট্রিং নেই
  • ইনপুট / আউটপুট দৈর্ঘ্যের সীমা নেই
  • alচ্ছিক আরগ "-r" আউটপুটকে বিপরীত করে।

স্টিডিন থেকে ইনপুট। ব্যাবহৃত হচ্ছে:

$ declare -i i=52146729
$ ./ksort.sh <<< $i
12245679 $ 
$ ./ksort.sh -r <<< $i
97654221 $ 
$ 

আমি সত্যিই ইচ্ছে করে যে আমি প্রোগ্রামটির বিরুদ্ধে কোনও নিয়মকে এমন কোনও কিছু দিয়ে কাজ করতাম যা কোনও পূর্ণসংখ্যা নয় with আমার ধারণা এখন অনেক দেরি হয়ে গেছে।
কোজিরো

1
"\\ n" এর পরে নতুন লাইনটি গণনা করবেন না তাই আপনি 21 না করে 20 রান করেছেন
গ্লেন র্যান্ডার্স-পেহারসন

আমি নিউলাইনটি গণনা করছি না, তবে কোনও ফাইলটিতে সংরক্ষিত স্ক্রিপ্ট হিসাবে এটি আমার সম্পাদকের দ্বারা সংরক্ষিত হিসাবে ইওএফ এ একটি \ 0 রয়েছে। আমি সাধারণত এই যাইহোক গণনা। তবে আমি সেই \ 0 টি বন্ধ করতে পারি, এবং স্ক্রিপ্টটি এখনও কাজ করে, তাই আমি এটি নেব!
ডিজিটাল ট্রমা

@ কোজিরো এটি bashপূর্ণসংখ্যার ধারণা নিয়েও কাজ করে ( ঘোষিত -i)। সম্পাদনা করা হয়েছে।
ডিজিটাল ট্রমা

(বিএসডি / ওএসএক্স trআপনার সিনট্যাক্স পছন্দ করে না, যার জন্য আপনাকে সেই সিস্টেমে একটি চরিত্রের জন্য ব্যয় করতে হবে।) যাইহোক, আমি যুক্তি দিয়ে বলছি যে এগুলি এখনও স্ট্রিং অপারেশনগুলি হূদয়ে রয়েছে। declare -iকোনও নামটিকে পূর্ণসংখ্যা হিসাবে চিহ্নিত করে না, এটি শেলটি তার উপর অ্যাসাইনমেন্ট এক্সপ্রেশনগুলির আরএইচএসে গাণিতিক প্রসঙ্গটি ব্যবহার করে।
কোজিরো

7

সি - 64 অক্ষর, 64 পয়েন্ট

main(int a,char**b){b++;qsort(*b,strlen(*b),1,strcmp);puts(*b);}

আপনি ভাবতে পারেন যে কোনও শিরোনাম ছাড়াই আমি কীভাবে এটি কাজ করতে পারি। সহজ, এর সাথে সংকলন:

gcc -include stdio.h stdlib.h string.h test.c -o test --std=gnu11 -Wall -g -O3

আন golfed:

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

main(int a, char **b)
{
    b++;
    qsort(*b, strlen(*b), sizeof(char), strcmp);  // sizeof(char) is guaranteed to be 1 by standards
    puts(*b);
}

আমি অক্ষর বাছাই অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছে, কেবল কারণ আমি।

টেস্ট রান:

$ ./test 132815
112358
$ ./test 423791
123479
$ ./test 1234767189728975213132471243985123957120837412
0111111112222222233333344445556777777788889999
$ ./test 4789359uihjasvb8ygohq9poi3n4jiouy58g
3344557888999abgghhiiijjnooopqsuuvyy

1
খুব ভালভাবে "গল্ফিং" করা হয়েছে: ডি
প্রোগ্রামারডান

আমি এটি উবুন্টু ১৪.০৪ এ সংকলন করতে পারি না তবে আমি সংকলন করতে পারি main(int a,char**b){b++;qsort(*b,strlen(*b),1,strcmp);puts(*b);}যা যাই হোক ছোট orter
gmatht

@gmatht আমি নিশ্চিত না কেন এটি সংকলন করবে না, এটি আমার সিস্টেমে ঠিকঠাক করতে সক্ষম হয়েছিল। ইঙ্গিত বিটিডব্লিউর জন্য ধন্যবাদ!
syb0rg

এটি পছন্দ হয়নি c(*a, আমার সিসির সংস্করণটি জোর দিয়েছিল যে c(char*aপরিবর্তে আমাদের করা দরকার ।
gmatht

7

সি ফাংশন (লিটল এন্ডিয়ান আর্চ), 131 108 টি অক্ষর

স্লাইডসোর্ট্ট উত্তর ছাড়া কোনও বাছাইয়ের চ্যালেঞ্জ সম্পূর্ণ নয় । এইটিকে ফিরে আসতে 10 সেকেন্ড সময় লাগবে, তবে এটি কাজ করে এবং আমি মনে করি এটি সম্পূর্ণরূপে অনুমানের মধ্যে রয়েছে। এই ফাংশনটি একটি একক int প্যারাম নেয় এবং দশমিক অঙ্ক অনুসারে বাছাইয়ের পূর্বে একটি int প্রদান করে:

c=0,d;
k(i){
    for(;i;i/=10,fork()?c++:(sleep(d),exit(d)))
        d=i%10;
    for(;c--;i=i*10+(d>>8&255))
        wait(&d);
    return i;
}

পঠনযোগ্যতার জন্য নিউলাইন এবং ইন্ডেন্টেশন যুক্ত হয়েছে

নীচে কল করুন:

int main (int argc, char **argv) {
    int i = 52146729;

    printf("%d\n", k(i));
    return (0);
}

2
খুশী হলাম। তবে আমি মনে করি আপনি কিছু অক্ষর সংরক্ষণ করতে গ্লোবাল ভেরিয়েবল ব্যবহার করতে পারেন। এছাড়াও, আপনি এর ?:পরিবর্তে ব্যবহার করতে পারেন if-elsefork()?c++:(sleep(d),exit(d));
ব্যবহারকারী 12205

@ace টিপস জন্য ধন্যবাদ! আমি আগে টার্নারি অপারেটর চেষ্টা করেছিলাম কিন্তু পিছনে গিয়েছি (,)
ডিজিটাল ট্রমা

6

জাভা: 262 পয়েন্ট

হ্যাঁ, হ্যাঁ আমি জানি, এটি হতাশ, তবে এখনও ...

class G{Object m(StringBuffer s,int o){for(int i=1;i<s.length();i++){int j=i-1,t=s.charAt(i),u=s.charAt(j);boolean c=o==0?t>u:t<u;for(;j>-1&c;){s.setCharAt(j+1,s.charAt(j));c=--j>-1;c=c?(o==0?t>s.charAt(j):t<s.charAt(j)):c;}s.setCharAt(++j,(char)t);}return s;}}

বিশ্লেষণ (চিহ্নিত করা):

  1. 0. দিয়ে শুরু হচ্ছে (স্কোর = 0)
  2. মোট 262 টি অক্ষর। (স্কোর = 0 + 262 = 262)
  3. +10 - ব্যবহারের জন্য StringBuffer(আমি এটির চেয়ে কম কারণ এটি ব্যবহার করেছি StringBuilder) (স্কোর = 262 + 10 = 272)
  4. -10 - আউটপুট নমনীয় করার জন্য। আমি 0 = অবতরণ , 1 = আরোহী , তাই 262 এ ফিরে এসেছি!

ব্যবহার:

G.javaকমান্ড প্রম্পটে আপনি যখন ফাইলটি চেষ্টা ও সংকলন করেন , তখন এটি অনেকগুলি সমস্যা (ত্রুটি) তৈরি করে) তাহলে, সমাধান?

কম্পাইল G.javaমতো IDE তে বর্গ NetBeansবা Eclipseবা এমনকি BlueJ। এটি কোনও ঝামেলা ছাড়াই সংকলন করা উচিত (কোনও সতর্কতা উপেক্ষা করুন)।

তারপরে, এই শ্রেণিটি main()অন্য কোনও শ্রেণীর (অথবা এমনকি সেই শ্রেণি নিজে থেকেই) কোনও পদ্ধতিতে কল করা উচিত । আমি এটি অন্য একটি ক্লাস করছি, তাই আমি এটি আমার চরিত্রের গণনায় যুক্ত করছি না। অন্যান্য শ্রেণিটি একইভাবে (ব্যবহার না করে cmd) সংকলন করুন । এখন অন্য শ্রেণিতে main()পদ্ধতিটি এমন কিছু হওয়া উচিত:

public static void main(String[]a){
    System.out.println(new G().m(new StringBuffer(a[0]),1));
    //for descending, put '0' instead of '1'
}

অপ্রয়োজনীয় স্পেস, মন্তব্য এবং লাইন ব্রেকগুলি বাদ দিয়ে এটি আরও 93 টি অক্ষর। আমি এটি আমার চরিত্রে যুক্ত করছি না কারণ এটি কেবল কনসোলের মাধ্যমে প্রদর্শনের জন্য।

আউটপুট:

জেরো অর্থাত্ 0বিবেচিত হয়। ধরুন বাহ্যিক শ্রেণীটি Helper.java, এবং এটি সফলভাবে সংকলিত হয়েছে, কনসোলের মাধ্যমে কয়েকটি উদাহরণ হ'ল

INPUT :সি: ...> জাভা সহায়ক 008321
OUTPUT:001238

INPUT :সি: ...> জাভা হেল্পার 79359105
OUTPUT:01355799

যখন নামানো হয়েছে 0নামানো ...

INPUT :সি: ...> জাভা সহায়ক 008321
OUTPUT:832100

INPUT :সি: ...> জাভা সহায়ক 79359105
OUTPUT:99755310

মন্তব্য:

  1. আমি স্পষ্টভাবে কোনও অ্যারে ঘোষণা করিনি G.java। এটিই মূল শ্রেণি।
  2. আমি সংখ্যা অনুসারে বাছাই করতে সন্নিবেশ বাছাইটি ব্যবহার করছি ।
  3. সংখ্যাটি সর্বোচ্চ দৈর্ঘ্যের হতে পারে - Integer.MAX_VALUEকারণ এটি কোনও আকারের সর্বোচ্চ আকার (জাভাতে) রাখতে পারে।
  4. এই উত্তরটি সংক্ষিপ্ত করা যেতে পারে (আমি বিশ্বাস করি) সুতরাং দয়া করে আমাকে সহায়তা করুন (আমার প্রথম উত্তরটি উন্নত করুন)।
  5. সেই মহান sশ্বরকে ভয় করুন যারা দুর্ঘটনাক্রমে জাভা (এবং কোড কনভেনশন নিয়ে এসেছিলেন) এর মতো দীর্ঘ দীর্ঘ এমনকি দুর্দান্ত ভাষা তৈরি করেছিলেন!

5

টেক্স / ল্যাটেক্স (৩৩২)

যদি আসল কোডটি কোনও প্যাকেজে রাখা হয় s, তবে মূল লটেক্স ফাইলটি দুর্দান্ত এবং সহজ দেখাচ্ছে। নম্বরটি কেবল গণিত হিসাবে দেওয়া হয়েছে। সংখ্যাটি নেতিবাচক হলে, বাছাইয়ের ক্রমটি বিপরীত হয়। প্যাকেজের কোডটি sপ্লেইন টেক্স সহ আরও ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ আরও নীচে।

\documentclass{book}
\usepackage{s}
\begin{document}
  $52146729$

  $-52146729$ % reversed ordering

  $277981468517523153773703292073191466142223027369188752287219582183$
\end{document}

প্যাকেজটিs (এক লাইন, লাইন প্রান্তের প্রয়োজন নেই):

\TeXXeTstate1\everymath{\aftergroup\B\def~#1{\gdef#1{}\aftergroup#1}
~\a~\b~\c~\d~\e~\f~\g~\h~\i~\j\aftergroup\E\xdef\B{}\xdef\E{}}
\def~#1#2{\mathcode`#1"8000\lccode`~`#1\lowercase{\def~{\xdef#2{#2#1}}}}
~0\a~1\b~2\c~3\d~4\e~5\f~6\g~7\h~8\i~9\j\mathcode`-"8000\lccode`~`-
\lowercase{\def~{\xdef\B{\beginR}\xdef\E{\endR}}}

ফলাফল:

ফলাফল

স্কোর: হতাশ

  • সঙ্গে প্লেইন TeX ব্যবহার etexবা pdftex, ফাইল কমে যাবে:

    <contents of s.sty>\rm\shipout\hbox{$<number>$}\bye

    বাইটস: 318 বাইট ( s.sty) + 24 ছাড়াই বিশ্রামের জন্য বাইট

  • অ্যারে ব্যবহার করা হয় না: 0

  • আমি বহু-চরিত্রের স্ট্রিং দেখতে পাচ্ছি না: 0

  • সংখ্যাটি অ্যালগরিদম দ্বারা সীমাবদ্ধ নয়। বৃহত্তম টেক্স নম্বরটি হ'ল 2 31 - 1 = 2147483647 The উদাহরণটি 66 66-সংখ্যার নম্বর ব্যবহার করে, বৃহত্তর উপায়ে: 0

  • যদি একটি বিয়োগ দেওয়া হয়, তবে বাছাইয়ের ক্রমটি উতরে নেওয়ার দিকে ফিরে যাবে: −10

0 + 318 + 24 + 0 + 0 - 10 = 332

অ্যালগরিদম:

অঙ্কগুলি গণিত মোডে সক্রিয় অক্ষর তৈরি করা হয়। প্রতিটি অঙ্ক ম্যাক্রোতে প্রতিটি ব্যবহার স্মরণ করে এবং সংগ্রহ করে। গণিতের মোডের পরে ম্যাক্রোগুলি অঙ্কের সাথে আরোহী ক্রমে আউটপুট হয়।

দিকনির্দেশটি ডান থেকে বামে পাঠ্য, একটি ই-টেক্স বৈশিষ্ট্য দ্বারা সম্পন্ন হয়েছে।

Degolfed সংস্করণ মধ্যে কোডেরs.sty

\TeXXeTstate = 1 % enable mixed direction typesetting
\everymath{%
  % \B and \E surround the number, they will be redefined
  % with right-to-left primitives to output the reverted number
  \xdef\B{}
  \xdef\E{}
  \aftergroup\B
  % the active character ~ is defined as help macro;
  % the argument is the collector macro
  \def~#1{%
    \gdef#1{}% initially the macro is empty
    \aftergroup#1%
  }%
  % the ten macros \a to \j form the result number
  ~\a~\b~\c~\d~\e~\f~\g~\h~\i~\j
  \aftergroup\E
}
% the active ~ is used as helper macro;
% first argument is the digit, the second argument is the collector macro
\def~#1#2{%
  \mathcode `#1  = "8000 % make digit active in math mode
  \lccode `~ = `#1 % trick for defining the active digit 
  \lowercase{%
    \def~{%
      \xdef#2{#2#1}% the digit adds itself to its collector macro
    }%
  }%
}
~0\a~1\b~2\c~3\d~4\e~5\f~6\g~7\h~8\i~9\j
% Defining the minus character as switch for descending digits:
\mathcode `- = "8000 % minus sign active in math mode
\lccode `~ = `- % trick for defining the active minus
\lowercase{%
  % the minus sign redefines the wrapper macros \B and \E that
  % surround the result number. These macros now uses
  % primitives for right-to-left typesetting.
  \def~{%
    \xdef\B{\beginR}%
    \xdef\E{\endR}%
  }%
}

প্রতিলিপি

কিছু অনলাইন ল্যাটেক্স সংকলক রয়েছে, এখানে একটি তালিকা পাওয়া যাবে । আমি তালিকার প্রথম আইটেমটি সায়েন্সসফট.এটে ল্যাটেক্স সার্লেটটি চেষ্টা করেছি । এটি স্বাক্ষর না করে ব্যবহার করা যেতে পারে এবং এটি স্থায়ী URL গুলি তৈরি করতে পারে: উত্স এবং চিত্র হিসাবে ফলাফল


এটি নিজে যাচাই করার জন্য আমার কাছে লটেক্স চপস নেই। আমি আপনার জন্য এটি নিতে হবে। :)
কোজিরো

@ কোজিরো: লটেক্সের জন্য কয়েকটি অনলাইন সংকলক রয়েছে, উদাহরণের জন্য আপডেট হওয়া উত্তরটি দেখুন।
হাইকো ওবারডিক

হেইকো এটা ভয়াবহ। +1 টি! এক্সডি
শন অলরেড

5

সি - 65

r,t,i;s(n){for(;++i;)for(t=n;t;t/=10)r=t%10-i?r:10*r+i;return r;}

বিচক্ষণ পর্যবেক্ষক মনে রাখবেন যে এই হে মধ্যে অ্যালগরিদম রান বাছাই (ঢ) ডিজিটের সংখ্যার উপর সময় n

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

অব্যক্ত সংস্করণটি ঠিক সমতুল্য নয়, তবে এটি জড়িত প্রকৃত অ্যালগরিদমকে আরও ভালভাবে জানায়।

int s(int n)
{
    int r = 0;
    int t;
    int i;
    for(i = 0; i < 10; i++)
    {
        for(t = n; t != 0; t /= 10)
        {
            if(t % 10 == i)
            {
                r = 10 * r + i;
            }
        }
    }
    return r;
}

ফাংশনটির জন্য এখানে একটি পরীক্ষার জোতা রয়েছে:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    if(argc != 2) return 1;
    printf("%d\n", s(atoi(argv[1])));
    return 0;
}

4

হাস্কেল - 96

96 টি অক্ষর, কোনও অ্যারে, কোনও স্ট্রিং, কোনও পূর্ণসংখ্যার সীমা, বিপরীত করতে পারে না

d=(`divMod`10)
a&(0,0)=a
a&(y,z)=(z%d a)&d y
a%(y,z)|z>a=10*(a%d y)+z|1<3=100*y+10*z+a
s=(0&).d

উদাহরণ:

λ: s 52146729
12245679
λ: s 502010406072952146729521467295214672952146729
1111122222222224444455555666667777799999
λ: s 100
1

এটি একটি সন্নিবেশ বাছাই করা হয়, সরাসরি তাদের পূর্ণসংখ্যার উপর সঞ্চালিত হয়। এটি অন্যান্য হাস্কেল এন্ট্রির মতো যা বুদ্বুদ সাজানোর মতো, যদিও আমি শপথ করেছিলাম যে আমি এটি দেখার আগে এটিতে কাজ করছি।

সংক্ষিপ্ত গাইড:

  • dএকটি সংখ্যাকে একক এবং দশকে ভাগ করে, অর্থাত: d 135জোড়াটি(13,5)
  • a%xaসংখ্যার মধ্যে অঙ্ক সন্নিবেশ সাজানো হয়x
  • a&xএর xমধ্যে ইউনিট ডিজিট সন্নিবেশ করা aএবং ফলাফল এবং বাকী অংশে পুনরাবৃত্তি করে বাছাই করে
  • s x&0 এবং এর পুনরাবৃত্তি বন্ধ লাথি মেরে এক্স প্রকারx

কৌশলটি হ'ল দ্বিতীয় তর্কটি সরাসরি %এবং &তা নয় x, তবে xডিভোমড ব্যবহার করছেd


খুশী হলাম। আমি ইনফিক্স ব্যবহার সম্পর্কে ভুলে যাব। আমি সম্ভবত কয়েকটা অক্ষর শেভ করতে পারি তবে আপনি আমাকে মারতে পারেন। +1
বাজরাঘ

3

পাইথন 3.3 61 পয়েন্ট

print(''.join(sorted(input())))

এই প্রোগ্রামটি ইনপুটটিকে স্ট্রিং হিসাবে গ্রহণ করে, যা স্ট্রিং হিসাবে গণ্য হয় কারণ এটি অবিলম্বে কোনও পূর্ণসংখ্যায় পরিবর্তিত হয় না। +10

স্ট্রিংটি অ্যারে +10 এ সাজানো হয়েছে

এই অ্যারেটি স্ট্রিং +10 এ একসাথে যুক্ত হয়েছে

নোট:'' অ্যারে এর বিষয়বস্তু যোগদানের জন্য ব্যবহৃত একটি মাল্টি অক্ষর স্ট্রিং, তাই +10 স্কোর যোগ করা হয়নি নয়।

প্রোগ্রামটি 31 টি অক্ষর নিয়ে গঠিত। +31

31 + 10 + 10 + 10 = 61 পয়েন্ট


+1 যদিও আপনি যে ডেটা প্রসেস করেন তা কখনই সংখ্যা নয়। (এটি এর মতো একমাত্র উত্তর নয়, আমি জানি))
কোজিরো

এটি সুস্পষ্টভাবে বলা হয়নি, যদিও বলা হয়ে থাকে। আমার আসল কোডটি ছিল print(int(''.join(sorted(input())))), তবে পূর্ণসংখ্যার জন্য castালাই কেবল পয়েন্ট যুক্ত করেছে এবং কোডটি কোনও নিয়মকে অনুসরণ করে নি। আমি মনে করি যে চ্যালেঞ্জটি আমি মনে করি সত্যই সত্য হয়ে উঠিনি। তবে তিনি উল্লেখ করেছেন যে ইনপুটটি স্ট্রিং হতে পারে এবং আউটপুট একটি স্ট্রিং (মুদ্রণ বিবৃতিগুলির জন্য) হতে পারে এবং এর মধ্যে কিছুই বলে না:]
এরদেখায়সার

3

জে, 10 টি অক্ষর (+ 1 স্ট্রিং) স্কোর = 20

s=./:~&.":

ব্যবহার:

   s 52146729
12245679

সমস্ত 32 বিট সংখ্যার জন্য কাজ করে।

ব্যাখ্যা:

/:~বিন্যাসের &.আওতায় সাজান ":। আমার পূর্ববর্তী সংস্করণটিও অ্যারে ব্যবহার করেছে, তবে সেগুলি ব্যয়বহুল তাই এখন আমাকে কেবল একটি স্ট্রিং ব্যবহার করতে হবে এবং বর্ণগুলি বর্ণমালা অনুসারে বাছাই করা দরকার। ":যে সংখ্যাকে একটি স্ট্রিংয়ে ইনপুট করা হয় তা রূপান্তর করে এবং /:~অঙ্কগুলি বাছাই ক্রমে রূপান্তরিত করে। কারণ সাজানটি 'আন্ডার' ফরম্যাটে সম্পন্ন হয়ে গেলে, বাছাইটি শেষ হয়ে গেলে, স্ট্রিংটি একটি সংখ্যায় ফিরে রূপান্তরিত হয়। বিপরীত করার ক্ষমতা যুক্ত করা সম্ভবত এটি সাশ্রয়ের চেয়ে বেশি ব্যয় করতে পারে, তাই আমি বিরক্ত করিনি।

যুক্তিটি তৈরি করা যেতে পারে যেহেতু জে, এপিএল এবং কে এর মতো একটি অ্যারে-ভিত্তিক ভাষা, একক ইনপুটটি 1 টি আইটেমের অ্যারে, তবে আমি আমার স্কোর গণনার সময় এইরকম কঠোর দৃষ্টিভঙ্গি গ্রহণ করা পছন্দ করি নি।

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


আপনি একটি ব্যাখ্যা প্রদান করতে পারেন? দেখে মনে হচ্ছে এটি সংখ্যাকে একটি স্ট্রিং হিসাবে ফর্ম্যাট করছে, অ্যারেতে বিভক্ত হয়ে অ্যারে বাছাই করছে, তারপরে এটিকে স্ট্রিং হিসাবে সংশোধন করছে ... অ্যারে ও স্ট্রিংয়ের জন্য এখানে কোন জরিমানা নেই?
বাজরাঘ

@ বাজজার্ঘ আমি দুটি কারণে আমার উত্তর জমা দেওয়ার সময় আমি ইচ্ছাকৃতভাবে কোনও স্কোর ঘোষণা করি নি: 1) এটি ট্যাগ [কোড-গল্ফ] তাই বোনাসগুলি সত্যিকার অর্থে আসে না এবং 2) এটি আমার কাছে স্পষ্ট ছিল না যা প্রযোজ্য হবে । আমি একটি ব্যাখ্যা যুক্ত করব।
গ্যারেথ

আমার কোন ট্যাগ ব্যবহার করা উচিত? এটি পেনাল্টি সহ কোড গল্ফ…
কোজিরো

@ কোজিরো - কোড-গল্ফ ট্যাগের উপরে মাউস যা এটি আপনাকে বলে - কোড-চ্যালেঞ্জ।
বাজরঘ

3

পাইথন 2.7: 174

import math
i=input()
d={n:0for n in xrange(10)}
for n in(i/10**c%10for c in xrange(1+math.log10(i))):d[n]+=1
print"".join(str(n)for n in xrange(10)for c in xrange(d[n]))
  • কোনও অ্যারে নেই (পরিবর্তে পুনরাবৃত্তকারী এবং একটি অভিধান ব্যবহৃত হয়)
  • মাল্টি-ক্যারেক্টার স্ট্রিং নেই (আউটপুট বাদে)
  • কোনও কৃত্রিম সর্বোচ্চ সংখ্যার সংখ্যা
  • কোন বিপরীত

এটি সমস্ত 10 টি সংখ্যার মান 0 ম্যাপিংয়ের মাধ্যমে একটি অভিধান তৈরি করে কাজ করে Then তারপরে এটি সংখ্যার দৈর্ঘ্যের উপর পুনরাবৃত্তি করে log10(i), প্রতিটি অঙ্ক ( (i / (10 ** c)) % 10) বের করে এবং অভিধানে সেই অঙ্কটির জন্য কাউন্টার বাড়িয়ে তোলে । সবশেষে এটি 10 ​​টি সংখ্যার উপরে পুনরাবৃত্তি করে একটি স্ট্রিং তৈরি করে এবং প্রতিটি সংখ্যার জন্য স্ট্রিং হিসাবে অঙ্কের এক উদাহরণ উপস্থাপন করে।

আমি সর্বশেষ লাইনটি পরিবর্তন করতে পারলাম print"".join(d[n]*str(n)for n in xrange(10))যা 16 অক্ষর কম হবে, তবে বহু-অক্ষরযুক্ত স্ট্রিং ব্যবহার করবে।


i=int(input())হতে পারে মাত্র i=input()হিসাবে input()স্বয়ংক্রিয়ভাবে সংখ্যা evals।
ব্যবহারকারী 80551

@ ব্যবহারকারী 80551: হ্যাঁ, অবশ্যই! ভাল কল.
গাবে

3

সি (সি 90 পর্যন্ত) বা সি ++, 78 66 পয়েন্ট

ফাংশনটি সাজান একটি পূর্ণসংখ্যা বলা হয় s

s(i){t=10,a=i?s(i/t):0,b=i%t,c=a%t;return c>b?t*s(a-c+b)+c:t*a+b;}

স্কোরিং:

  • 66 টি অক্ষর (+66)
  • 0 টি অ্যারে (+0)
  • 0 টি স্ট্রিং (+0)
  • মেশিন (আকার int) (+0) দ্বারা নির্ধারিত ব্যাপ্তি
  • কেবল একটি বাছাইয়ের দিকনির্দেশ (-0)

পুরানো সংস্করণ (points 78 পয়েন্ট, সি ++ এবং আরও আধুনিক সি সংস্করণগুলির সাথেও কাজ করে)

int s(int i){int t=10,a=i?s(i/t):0,b=i%t,c=a%t;return c>b?t*s(a-c+b)+c:t*a+b;}

3

সি # - 179

using System.Linq;class S{void Main(string[] a){Console.Write(string.Concat(string.Concat(a).Replace("-","").OrderBy(o=>a[0].Contains('-')?-o:o)));}}

আন golfed

using System.Linq;

class S
{
    void Main(string[] a)
    {
        Console.Write(string.Concat( 
            string.Concat(a)
                .Replace("-", "")
                .OrderBy(o => a[0].Contains('-') ? -o : o )));
    }
}

পরীক্ষা

সাধারন:

app.exe 52313698

বিপরীত:

app.exe 52313698-

পয়েন্ট: (আমি আশা করি আমি পয়েন্ট সিস্টেমটি সঠিকভাবে বুঝতে পেরেছি - সংশোধন করতে নির্দ্বিধায়)

  • চরস: 149
  • স্ট্রিং: 10 + 10
  • অ্যারে: +20
  • অর্ডার: -10
  • মোট: 149 + 10 + 20-10 = 179

লিংকপ্যাড সহ সি # - 123

void Main(string[] a){Console.Write(string.Concat(string.Concat(a).Replace("-","").OrderBy(o=>a[0].Contains('-')?-o:o)));}

পরীক্ষা

সাধারন:

lprun.exe sorta.linq 52313698

বিপরীত:

lprun.exe sorta.linq 52313698-

পয়েন্ট:

  • চরস: 122
  • স্ট্রিং: 10 + 10
  • অ্যারে: +20
  • অর্ডার: -10
  • মোট: 122 + 10 + 20-10 = 152

3

জাভা 1469

জাভাতে একটি স্ট্রিং এবং অ্যারে মুক্ত সমাধান। 1437 টি অক্ষর + 32 কারণ এটি কেবল ইনপুট হিসাবে দীর্ঘ। MAX_VALUE পর্যন্ত নেয়। ডাবল ব্যবহার করে আমি এর পরিবর্তে 300 টিরও বেশি অঙ্কগুলিতে যেতে পারি তবে এটি বাস্তবায়ন করা খুব ক্লান্তিকর হবে। এর চেয়ে বড় যে কোনও কিছুর জন্য অভ্যন্তরীণভাবে অ্যারে ব্যবহার করে বিগইন্টেগার এবং আফাইক প্রয়োজন হবে। আপনি যদি ইনপুটটির জন্য 19 টিরও কম সংখ্যক ব্যবহার করেন তবে আউটপুটটিতে নেতৃস্থানীয় জিরো থাকবে। Gণাত্মক ইনপুট সমস্ত শূন্য দেবে এবং কিছু নয় এমন কিছু ব্যতিক্রম ঘটবে।

সাজানোর জন্য আমি সবচেয়ে সহজ ব্যবহার করেছি তাই ভাবতে পেরে এটি বেশ দক্ষ। (ও (এন * এন) হওয়া উচিত)

input:  9212458743185751943
output: 1112233444555778899

আমি জানি এটি অন্য ভাষার সমাধানগুলির সাথে সত্যিই তুলনা করে না তবে আমি এটি জাভাতে পাওয়া সবচেয়ে কমতম বলে মনে করি। (যদি কেউ জেনে থাকেন যে কীভাবে এটি আরও সংক্ষিপ্ত করে সম্পাদনা / মন্তব্য করতে দ্বিধা বোধ করবেন)

class D
{
    long c,d,e,f,g,h,k,l,m,n,o,p,q,r,s,t,u,v,w;
    long x;

    public D(Long a)
    {
        x = a;
        c = g();
        d = g();
        e = g();
        f = g();
        g = g();
        h = g();
        k = g();
        l = g();
        m = g();
        n = g();
        o = g();
        p = g();
        q = g();
        r = g();
        s = g();
        t = g();
        u = g();
        v = g();
        w = g();
        int i=0;
        while(i++ < 19) s();
        System.out.printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",c,d,e,f,g,h,k,l,m,n,o,p,q,r,s,t,u,v,w);
    }

    long g()
    {
        if( x <= 0 ) return 0;
        long b = x % 10;
        x = x / 10; 
        return b;
    }

    void s()
    {
        if(c > d) {c += d; d = c - d; c -= d;}
        if(d > e) {d += e; e = d - e; d -= e;}
        if(e > f) {e += f; f = e - f; e -= f;}
        if(f > g) {f += g; g = f - g; f -= g;}
        if(g > h) {g += h; h = g - h; g -= h;}
        if(h > k) {h += k; k = h - k; h -= k;}
        if(k > l) {k += l; l = k - l; k -= l;}
        if(l > m) {l += m; m = l - m; l -= m;}
        if(m > n) {m += n; n = m - n; m -= n;}
        if(n > o) {n += o; o = n - o; n -= o;}
        if(o > p) {o += p; p = o - p; o -= p;}
        if(p > q) {p += q; q = p - q; p -= q;}
        if(q > r) {q += r; r = q - r; q -= r;}
        if(r > s) {r += s; s = r - s; r -= s;}
        if(s > t) {s += t; t = s - t; s -= t;}
        if(t > u) {t += u; u = t - u; t -= u;}
        if(u > v) {u += v; v = u - v; u -= v;}
        if(v > w) {v += w; w = v - w; v -= w;}
    }

    public static void main(String[] y)
    {
        D d = new D(Long.parseLong(y[0]));
    }
}

2

এডাব্লুকে - 101

'এক্স' ফাইল:

BEGIN{n=ARGV[1]
r=ARGV[2]
for(d=r;d<10;d++)for(p=1;p<=length(n);p++){D=r?d:9-d
if(D==substr(n,p,1))printf D}print}

রান:

$ awk -f x 52146729
97654221
$ awk -f x 52146729 0
97654221
$ awk -f x 52146729 1
12245679
$ awk -f x 1234567890123456789012345678901234567890
9999888877776666555544443333222211110000
$ awk -f x 1234567890123456789012345678901234567890 1
111122223333444455556666777788889999

কেবলমাত্র ব্যবহৃত অ্যারেটি হ'ল এআরজিভি এবং এটি বাছাইয়ের ক্ষেত্রে কোনও সহায়তা নয়, এটি কেবলমাত্র কমান্ডলাইন প্যারামিটারগুলিতে অ্যাক্সেস করে এবং এই মানগুলি অ-অ্যারে ভেরিয়েবলগুলিতে থাকে যেখানে গণনার জন্য প্রকৃত প্রয়োজন। আমি মনে করি এটি এই সমাধানের বিরুদ্ধে গণনা করবে না। নিম্নলিখিত গণনাটি এআরজিভি-অ্যারেটিকে বিবেচনা করে না:

111 (চর) - 10 (বিপরীত করতে পারে)


কখনও কখনও উন্মাদ জগতের একমাত্র বুদ্ধিমান উত্তর হ'ল উন্মাদনা। - ফক্স
মুলদার

:-D সত্যই! :-D

2

আমি প্রশ্নে ফাংশন বাছাইয়ের বিষয়ে কিছুই দেখতে পাচ্ছি না, সুতরাং ... (আমি যদি উত্তরগুলি নমন করে বা নিয়ম ভঙ্গ করে তবে আমি উত্তরটি সরিয়ে ফেলব, আমাকে জানান)

জাভাস্ক্রিপ্ট 56 96

function s(){alert(+prompt().split('').sort().join(''))}

জাভাস্ক্রিপ্ট 69 109 (বিপরীত)

function s(r){x=prompt().split('').sort();x=r?x.reverse():x;alert(+x.join(''))}

ইকামাস্ক্রিপ্ট arrow টি তীর ফাংশন ব্যবহার করে কিছুটা গল্ফ করা যেতে পারে :

ES6 50 90

s=()=>{alert(+prompt().split('').sort().join(''))}

ES6 63 103 (বিপরীত) (73-10)

s=(r)=>{x=prompt().split('').sort();x=r?x.reverse():x;alert(+x.join(''))}

promptএকটি স্ট্রিং প্রদান করে (আপনি অবিলম্বে একটি পূর্ণসংখ্যায় রূপান্তর করবেন না): +10; splitএকটি অ্যারে প্রদান করে: +20; sortএকটি ইন-প্লেস বাছাই করে (তাই এটি এখনও একই অ্যারে); joinএকটি নতুন স্ট্রিং, +10 প্রদান করে। মোট: 96.
কোজিরো

কীভাবে নিয়মগুলি লিখিত হয় তা আমাকে বুঝতে পেরেছিল যে কেবল আক্ষরিক গণনা করা হয়েছিল। যাইহোক, স্কোর আপডেট করা হচ্ছে।
নিককোলি ক্যাম্পলুনগো

2

এসইডি Cha 67 চার্স (score 67 বা ১০7 টি স্কোর করুন)

s/$/;0123456789/;:a;s/\(.\)\(.\)\(.*;.*\2.*\1\)/\2\1\3/;ta;s/;.*//;

এটি সংক্ষিপ্ততার জন্য বুদ্বুদ সাজানোর ব্যবহার করে। স্কোর 107 হবে যদি প্রতিটি নিয়মিত প্রকাশের প্যাটার্ন এবং প্রতিস্থাপনকে স্ট্রিং হিসাবে গণনা করা হয় (উদাহরণস্বরূপ 67 + (10 * 4))

মেমরি দ্বারা সীমাবদ্ধ অঙ্কগুলির সংখ্যা (এবং সম্ভবত ধৈর্য)


2

পাইথন ল্যাম্বদা ফাংশন (বিপরীত), 69

lambda n,d:''.join(sorted(n,reverse=d))
  • 39 টি অক্ষর (+39)
  • দুটি মাল্টি-চর স্ট্রিং: n(ইনপুট) এবং ''.join(...) (+20)
  • একটি তালিকা: sorted(...) (+20)
  • প্যারামিটারের উপর নির্ভর করে দিকটি বিপরীত করতে পারে d (-10)

পাইথন ল্যাম্বদা ফাংশন (অবিবর্তনযোগ্য), 67

lambda n:''.join(sorted(n))

সম্পাদনা: ইনপুটটি স্ট্রিং হওয়া উচিত। আমি সরাসরি স্ট্রিংটি ব্যবহার করার শাস্তি বিবেচনা করছি।


আমি গেমটি একটু উপরে দিয়ে স্পষ্ট করেছিলাম, বিশেষত অন্তর্নির্মিত প্রকারের ব্যবহার সম্পর্কে। একটি জেনারেটর ঠিকঠাক হতে পারে তবে পাইথন সহায়তা (2 এবং 3 উভয়ের জন্য) স্পষ্টভাবে জানিয়েছে raw_input([prompt]) -> string, তাই sorted(raw_input())+10 is এছাড়াও sorted -> new sorted list, তাই +20। তারপরে, S.join -> stringতাই আবার +10। স্লাইস স্বরলিপি এছাড়াও স্ট্রিং বোঝায়, সুতরাং +10 (স্লাইস স্বরলিপি সমর্থনকারী অন্য কিছু যুক্তিযুক্তভাবে +20 হবে)। সুতরাং আমি যথাক্রমে 73 এবং 108 গণনা করি।
কোজিরো

@ কোজিরো দয়া করে পরিষ্কার করুন: আমি কি এমন কোনও ফাংশন ব্যবহার করতে পারি যা সংখ্যার স্ট্রিংকে আর্গুমেন্ট হিসাবে গ্রহণ করে (আমি জরিমানা স্বীকার করি)। আমি কি কোনও ফাংশন ব্যবহার করতে পারি যা printআইংয়ের পরিবর্তে return?
ব্যবহারকারী 80551

দয়া করে নোট 4 দেখুন (যদিও নির্দিষ্ট নোটে, আমি আগ্রহী কেন আপনি lambdaএখানে একটি ব্যবহার করেননি ))
কোজিরো

1
@ কোজিরো প্রিন্ট / রিটার্ন সম্পর্কে আমার মূল বিষয়টি হ'ল এটি printসংক্ষিপ্ত এবং মোড়কের দরকার নেই। আমি জানতাম না যে আপনি ল্যাম্বদা ফাংশনগুলিকে অনুমতি দেবেন। আমি যখন পড়ি তখন ধরণের ফেসপ্লেমেড। এখন কি ঠিক আছে?
ব্যবহারকারী 80551

''.join(sorted(str(n))).আপনি কি দয়া করে আমাকে বলবেন কেন এটি উত্তর হিসাবে বিবেচিত হবে না? আমি কী নতুন
অলোক

2

কমন লিস্প - 126

(defun s(n p)(labels((a(n)(if(= 0 n)()(cons(mod n 10)(a (floor n 10)))))(b(a)(if(null a)0(+(car a)(* 10(b(cdr a)))))))(b(sort(a n) p))))

অরগোল্ফাইফাইড (স্টাইলিস্টিকালি পাশাপাশি লেক্সিক্যালি, কিন্তু ফাংশনালি অভিন্ন) সংস্করণ:

(defun sorta (n p)
  (labels ((digits (n)
             (unless (zerop n)
               (multiple-value-bind (quotient remainder)
                   (truncate n 10)
                 (cons remainder (digits quotient)))))
           (digit-cat (digits)
             (if (null digits)
                 0
               (+ (car digits)
                  (* 10 (digit-cat (cdr digits)))))))
    (digit-cat (sort (digits n) p))))

Negativeণাত্মক সংখ্যার অঙ্কগুলি negativeণাত্মক মান হিসাবে গণ্য করা হয়, এবং অঙ্কগুলি সর্বনিম্ন-তাত্পর্যপূর্ণ-প্রথম (যেমন, ছোট-এডিয়ান) বাছাই করা হয়। উদাহরণ:

CL-USER> (sorta 1234 #'<)
=> 4321
CL-USER> (sorta 12344321 #'<)
=> 44332211
CL-USER> (sorta 12344321 #'>)
=> 11223344
CL-USER> (sorta -12344321 #'>)
=> -44332211
CL-USER> (sorta 0 #'>)
=> 0
CL-USER> (sorta 8675309 #'<)
=> 9876530

গল্ফযুক্ত সংস্করণে হোয়াইটস্পেস সহ 136 টি অক্ষর রয়েছে। এটি কোনও স্ট্রিং এবং অ্যারে ব্যবহার করে না, এবং negativeণাত্মক পূর্ণসংখ্যাসহ নির্বিচারে-নির্ভুলতা পূর্ণসংখ্যার পরিচালনা করে। শ্রেণীবিভাজন একটি বাইনারি সম্পৃক্ত যা পূর্ণসংখ্যার একটি মোট ক্রম সংজ্ঞায়িত উপর স্থিতিমাপ হয় [-9, 9]সহ কিন্তু সীমাবদ্ধ নয় <এবং >:

CL-USER> (sorta 3546219870 (lambda (a b)
                             (cond ((and (evenp a)
                                         (oddp b))
                                    t)
                                   ((and (evenp b)
                                         (oddp a))
                                    nil)
                                   (t
                                    (< a b)))))
=> 9753186420

এটি 126 এর স্কোর দেয়।


2

জাভাস্ক্রিপ্ট 416/185

কোনও অ্যারে, কোনও স্ট্রিংস, কোনও সালিসি দৈর্ঘ্যের সীমাবদ্ধতা নেই ...

তবে বাছাই / নিচে সাজানো 10 টিরও বেশি অক্ষর ব্যবহার করতে পারে ^^ তবে আমি অঙ্কগুলি গণনা এবং সেগুলি আকর্ষণীয় মুদ্রণের ধারণাটি পেয়েছি - সম্ভবত কেউ এই ধারণাটি গল্ফস্ক্রিপ্টে ব্যবহার করতে এবং পুরস্কার জিততে পারে ;-)

var x=window.prompt(),y=0,z=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;
do
{
    z=x%10;
    x=(x-z)/10;
    if(!z)a++;
    if(z==1)b++;
    if(z==2)c++;
    if(z==3)d++;
    if(z==4)e++;
    if(z==5)f++;
    if(z==6)g++;
    if(z==7)h++;
    if(z==8)i++;
    if(z==9)j++;
}while(x);

while(a--)y=y*10;
while(b--)y=y*10+1;
while(c--)y=y*10+2;
while(d--)y=y*10+3;
while(e--)y=y*10+4;
while(f--)y=y*10+5;
while(g--)y=y*10+6;
while(h--)y=y*10+7;
while(i--)y=y*10+8;
while(j--)y=y*10+9;

alert(y);

একই কোডটি সংক্ষিপ্ত করে ইওল ব্যবহার করে: (তবে এটি সম্ভবত স্ট্রিংগুলি ব্যবহার করে বিবেচিত হবে ...)

var i = window.prompt(),o=0,i0=0,i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0,i9=0;
do
{
    eval("i"+i%10+"++");
    i = ~~(i/10);
} while (i > 0)

for(var j=0;j<10;j++) while (eval("i"+j+"--")>0) o = o*10+j;

alert(o);

আপনি আইএন এর পরিবর্তে 1 অক্ষরের নাম ব্যবহার করে 30 বাইট দ্বারা দীর্ঘ সংস্করণটি সংক্ষিপ্ত করতে পারেন।
গ্লেন রেন্ডার্স-পেহারসন

@ গ্লেনর্যান্ডার্স-পেহারসন আপনাকে ধন্যবাদ :-)
ফ্যালকো

সব সেমিকোলন কেন? এবং ইন্ডেন্টিং সম্পর্কে কে চিন্তা করে?
ক্যালকুলেটরফলাইন

1

সি (222)

static int a[10],r=1;o(n,c){while(n--)printf("%""i",c);}p(){int n;for(n=r<0?9:0;n>=0&&n<10;n+=r)o(a[n],n);}main(int _,char**v){char*s=v[1];if(*s=='-'){r=-1;++s;}do++a[*s-'0'];while(*++s);p();}

পয়েন্ট:

  • 192 (192 অক্ষর)
  • 40 (2 অ্যারে: আরজিভি (ভি) এবং ক)
  • 0 (কোনও মাল্টি চর স্ট্রিং নেই)
  • 0 (এটি কেবলমাত্র অঙ্কের মধ্যে সীমাবদ্ধ নয়)
  • -10 (সংখ্যাটি (আরজিভি [1]) negativeণাত্মক হলে বিপরীত বাছাই করে)

    = 222 পয়েন্ট

1000 সংকলক সতর্কতা থেকে মুক্তি পাওয়ার জন্য পতাকাগুলি প্রয়োজন: gcc -Wno-implicit-function-declaration -Wno-return-type -Wno-implicit-int -Wno-char-subscripts -o count2 counta2.c

"আরও ভাল" পঠনযোগ্য:

static int a[10],r=1;
o(n,c){while(n--)printf("%""i",c);}
p(){int n;for(n=r<0?9:0;n>=0&&n<10;n+=r)o(a[n],n);}
main(int _,char**v){char*s=v[1];if(*s=='-'){r=-1;++s;}do++a[*s-'0'];while(*++s);p();}

কিছুটা নাড়িত:

static int a[10],r=1;
o(n,c){
    while(n--) printf("%""i",c);
}
p(){
    int n;
    for(n=r<0?9:0;n>=0&&n<10;n+=r) o(a[n],n);
}
main(int _,char**v){
    char*s=v[1];
    if(*s=='-'){
        r=-1;
        ++s;
    }
    do ++a[*s-'0']; while(*++s);
    p();
}

এর "%""i"পরিবর্তে কেন ব্যবহার করবেন "%i"? তারা একই জিনিসটি সংকলন করে, সুতরাং আপনি কেবল দুটি অক্ষর নষ্ট করছেন।
গাবে

@ গ্যাবে হ্যাঁ আমি 2 টি অক্ষর নষ্ট করছি তবে "% i" হ'ল "মাল্টি চর স্ট্রিং" (10 পয়েন্ট) যেখানে "%" "আমি" নয় ... কমপক্ষে এখানে লোকেরা তর্ক করেছিলেন ...
সর্বোচ্চ।

1

আমি ইতিমধ্যে এই সমাধানটি দেখতে না পাওয়ার কোনও কারণ আছে কি?

চুনি

pry(main)> 52146729.to_s.split("").sort.join.to_i
=> 12245679

এটি কীভাবে স্কোর করবেন তা নিশ্চিত নই। বিভাজনটি একটি অ্যারে তৈরি করবে, তবে এর বাইরে নিশ্চিত নয় .. অ্যারেগুলির জন্য 38 অক্ষর + 2x20? বা এর মধ্যে এমন সমস্ত অ্যারে অন্তর্ভুক্ত করা উচিত যা সাজানোর মাধ্যমে অভ্যন্তরীণভাবে তৈরি হতে পারে?


1

ভিবিএস স্ক্রিপ্ট - 76 (96?)

x = "7892347684578892348025023389054859034234"

for i=0 to 9:n=n&string(len(x)-len(replace(x,i,"")),""&i):next:x=n

' x -> 00002222233333344444455556777888888889999

স্ট্রিং ব্যবহারের জন্য 66 অক্ষর + 10 n
(জানেন না যে replaceফাংশন এবং stringফাংশন ব্যবহার করে যে পরিমাণে x এর পরিমাণ যোগ করে অতিরিক্ত স্ট্রিং হিসাবে গণনা করা হয়)।

মূল স্ট্রিংয়ের দৈর্ঘ্যের সাথে একই স্ট্রিংয়ের পরিবর্তিত নির্দিষ্ট অঙ্কের সাথে তুলনা করে এটি একটি নির্দিষ্ট অঙ্কের পরিমাণ গণনা করে। তারপরে এটি n এর সাথে অঙ্কের পরিমাণ সংযুক্ত করে।


1

পাইথন 3 স্লিপসোর্ট (168)

একেবারে কোনও তালিকা বা লুপ নেই, কেবল জেনারেটর।

import math, threading
n=input()
if any(threading.Timer(x,lambda x:print(x,end='',flush=1),(x,)).start()for x in(n//10**i%10for i in range(math.log10(n)//1+1))):pass

সম্ভবত উন্নতি করা যেতে পারে।


1

র‌্যাকেট 97

97 পয়েন্ট (দুটি স্ট্রিংয়ের জন্য 87 +20, বাছাইয়ের জন্য -10, কোনও অ্যারে নেই)

(define(s n <)(string->number(list->string(sort(string->list(number->string n))<))))

এটি চরগুলির তালিকাগুলি ব্যবহার করে যাতে আপনার এটিকে যেমন char<?বা এর মতো চরের তুলনা ফাংশন দেওয়া দরকার char>?। আমি মনে করি এটি ফাঁকা স্থান যুক্ত করার পরিবর্তে এবং পরিবর্তনশীল নামগুলি বাড়ানোর চেয়ে বেশি কিছু করার কারণে এটি নিরবচ্ছিন্ন হিসাবেও যায়। আমার পুরানো সংস্করণ সম্ভবত আরও সম্মানিত :)

স্ট্রিং ছাড়াই পুরানো সংস্করণ:

১১০ পয়েন্ট (১২০ বাইট (utf-8) - সাজানোর ক্রম পরিবর্তন করার অনুমতি দেওয়ার জন্য 10 এটি কোনও স্ট্রিং এবং অ্যারে ব্যবহার করে না)

(define(S d <)(foldl(λ(x a)(+(* a 10)x))0(sort(let L((l'())(
d d))(if(= d 0)l(L(cons(modulo d 10)l)(quotient d 10))))<)))

Ungolfed:

(define (number-digit-sort number <)
  (foldl (λ (x a) (+ (* a 10) x))
         0
         (sort (let loop ((acc '()) (number number))
                 (if (= number 0)
                     acc
                     (loop (cons (modulo number 10) acc)
                           (quotient number 10))))
               <)))

আমি এটি 100,000 তম ফিবোনাচি নম্বর দিয়ে পরীক্ষা করেছি:

(number-digit-sort (fibonacci 100000) <)
;==> 1111... basically it's the digits:
; 1 2135 times
; 2 2149 times
; 3 2096 times
; 4 2023 times
; 5 2053 times
; 6 2051 times
; 7 2034 times
; 8 2131 times
; 9 2118 times

এবং বিপরীত ক্রমে একই:

(number-digit-sort (fibonacci 100000) >)
; ==> 999... and the digest is
; 9 2118 times
; 8 2131 times
; 7 2034 times
; 6 2051 times
; 5 2053 times
; 4 2023 times
; 3 2096 times
; 2 2149 times
; 1 2135 times
; 0 2109 times
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.