ফিনিট ক্যান্টরের ডায়াগোনাল


20

Nসংখ্যার প্রত্যেকটির সংখ্যার একটি তালিকা দেওয়া হয়েছে, একটি Nসংখ্যার আউটপুট দেয় যা প্রথম সংখ্যাটির কারণে প্রথম সংখ্যা থেকে পৃথক হয়, দ্বিতীয় সংখ্যাটির কারণে দ্বিতীয় সংখ্যা ইত্যাদি output

উদাহরণ

এই তালিকা দেওয়া:

1234
4815
1623
4211

সংখ্যার 2932প্রথম অঙ্কটি প্রথম সংখ্যার প্রথম অঙ্কের চেয়ে পৃথক, দ্বিতীয় সংখ্যাটি দ্বিতীয় সংখ্যার দ্বিতীয় অঙ্কের থেকে পৃথক, ইত্যাদি তাই এটি একটি বৈধ আউটপুট হবে।

ইনপুট

  • আপনি তালিকা এবং Nইনপুট হিসাবে উভয় নিতে পারেন , বা আপনি যদি চান তবে কেবল তালিকা।
  • তালিকার প্রতিটি পূর্ণসংখ্যার তালিকার দৈর্ঘ্যের যতগুলি সংখ্যক অংক থাকবে ( N)
  • সংখ্যাগুলিতে কোনও অগ্রণী শূন্য নেই
  • ইনপুট তালিকায় স্ট্রিং না করে অবশ্যই সংখ্যা থাকতে হবে।
  • আপনি ইনপুটগুলি ফাংশন আর্গুমেন্ট হিসাবে, এর মাধ্যমে STDINবা অনুরূপ কিছু হিসাবে নিতে পারেন ।
  • আপনি ধরে নিতে পারেন যে তালিকাটি 10 ​​টি উপাদানের বেশি হবে না (এবং তালিকার কোনও সংখ্যা এর চেয়ে বড় হবে না 2147483647)

আউটপুট

  • আউটপুট তালিকায় নেই এমনটি পর্যাপ্ত নয়। অঙ্কগুলি উপরে বর্ণিত হিসাবে পৃথক হওয়া আবশ্যক।
  • আপনি যে কোনও ডিজিট নির্বাচন কৌশল ব্যবহার করতে পারেন যা বিভিন্ন সংখ্যার সীমাবদ্ধতাকে সম্মান করে।
  • সংখ্যার শীর্ষস্থানীয় জিরো থাকতে পারে না
  • আপনি নম্বরটি আউটপুট করতে STDOUTপারেন, এটি কোনও ফাংশন থেকে ফিরিয়ে দিতে পারেন etc.

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

Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345

Possible output: 24680246


Input:
1

Possible output: 2

স্কোরিং

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins


সুতরাং আমরা STDINপার্সিংয়ের আগে পূর্ণসংখ্যায় রূপান্তর করতে হবে?
লিকি নুন

@ কেনি লাউ ইনপুটটিতে সংখ্যা থাকতে হবে, যদি আপনি ভাষা সরাসরি অঙ্কগুলি পার্স করতে পারেন তবে আপনাকে কোনও কিছুই রূপান্তর করতে হবে না।
ফলশালী করুন

তবে STDINডিফল্টরূপে স্ট্রিং ...
লিকি নুন

তারপরে ইনপুট স্ট্রিংটিকে পূর্ণসংখ্যার তালিকায় রূপান্তর করুন।
5:58

আমরা অঙ্কের তালিকা আউটপুট করতে পারি?
কনর ও'ব্রায়েন

উত্তর:


4

জেলি, 8 7 বাইট

1 বাইট ডেনিসকে ধন্যবাদ রক্ষা করেছে।

DŒDḢỊ‘Ḍ

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

ব্যাখ্যা

DŒDḢỊ‘Ḍ    Main link. Takes list as argument.
D          Convert each integer to decimal.
 ŒD        Get the diagonals.
   Ḣ       Get the first diagonal.
    Ị      Check if every digit <= 1.
     ‘     Increment every digit.
      Ḍ    Convert back to integer from decimal.

1বাদে 0এবং 1হয়ে যায় প্রতিটি অঙ্ককে রূপান্তর করে 2


8

সিজেএম ( 15 14 বাইট)

qN/ee{:=i2%)}%

অনলাইন ডেমো

ওয়ান-বাইট সাশ্রয়ের জন্য আদনানকে ধন্যবাদ ।

ব্যবচ্ছেদ

qN/    e# Split input on newlines
ee{    e# Label each line with its index and map:
  :=i  e#   Get the character at the same index (i.e. diagonalise)
  2%)  e#   Compute (ASCII value mod 2) + 1
       e#   Maps 0 1 2 3 4 5 6 7 8 9
       e#     to 1 2 1 2 1 2 1 2 1 2
}%

1
@ আদনান, এটি কাজ করে, ধন্যবাদ। বিকল্পভাবে i2%)হতে পারে 49&), ASCII কোডের চেয়ে অক্ষরের সাথে সরাসরি কাজ করা।
পিটার টেলর 14

7

পাইথন 2, 47 45 বাইট

lambda x,n:int(`x`[1::n+3])%(10**n/2)+10**n/9

@ এক্সনরকে 2 বাইট বন্ধ করে গল্ফ করার জন্য ধন্যবাদ!

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

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

`x`এক্সের তালিকার একটি স্ট্রিং প্রতিনিধিত্ব করে ।

প্রথম পরীক্ষার ক্ষেত্রে এটি স্ট্রিং দেয়

[92345678, 23456789, 34567890, 45678901, 56789012, 67890123, 78901234, 89012345]

[1::n+3]প্রত্যেকটি (n + 3) তম অক্ষর পুনরুদ্ধার করে - যেখানে এন দ্বিতীয়টির সাথে শুরু হওয়া x এর দৈর্ঘ্য । 2 টি অক্ষরের জন্য অ্যাকাউন্টিং ,, আমরা প্রথম সংখ্যার প্রথম সংখ্যা, দ্বিতীয় সংখ্যার দ্বিতীয় সংখ্যা ইত্যাদি উদ্ধার করি

[92345678, 23456789, 34567890, 45678901, 56789012, 67890123, 78901234, 89012345]
 ^          ^          ^          ^          ^          ^          ^          ^

পরিসরে প্রথম সংখ্যাটি ম্যাপ করার জন্য আমরা এখন 10n 2 নম্বরটি নিয়েছি [0, 4]

জন্য 93579135 , আমরা পেতে 93579135% 50000000 = 43579135

শেষ পর্যন্ত, আমরা শেষ ফলাফলটিতে 10 এন ÷ 9 যুক্ত করি , যা বৃদ্ধি হয় - 9 থেকে 0 থেকে প্রায় মোড়ক করে - 1 (কোনও বাহন নয়) বা 2 দ্বারা ( বহন করে) সমস্ত অঙ্ক করে ।

43579135 এর জন্য আমরা 43579135 + 11111111 = 54690246 পাই


4

এমএটিএল, 11 10 9 বাইট

VXd9\QV!U

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

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

ব্যাখ্যা

    % Implicity grab input as column vector of numbers
V   % Convert the input column vector into a 2D character array
Xd  % Grab the diagonal elements of the character array
9\  % Take the modulus of each ASCII code and 9
Q   % Add 1 to remove all zeros
V   % Convert the result to a string
!   % Transpose to yield a row vector of characters
U   % Convert back to an integer (as per the rules)
    % Implicitly display result

1
পুনঃটুইট দেখে মনে হচ্ছে এটির শীর্ষস্থানীয় শূন্য সমস্যা রয়েছে যদিও প্রথম সংখ্যাটি হ'ল 2: matl.tryitonline.net/…
Suever

হতে পারেVXd9\QV!U
স্যুভার

ওহ, আমি শূন্যের নেতৃত্ব দেওয়ার কথা ভাবি নি ...
লুইস মেন্ডো 5:58

@ লুইস মেন্ডো এগুলি কী অনন্য নয় তা বিবেচনা করে? যতক্ষণ না তারা ইনপুটটির সমান মান হয় না ততক্ষণ তা বিবেচ্য নয়।
সুইভর

আপনি পুরোপুরি ঠিক বলেছেন। আমি এটি সম্পর্কে ভুলভাবে ভাবছিলাম
লুইস মেন্ডো

3

পাইথ, 11 বাইট

jk.eh!ts@`b

সরল লুপ, 1 টি 2 হয়ে প্রতিটি বাদে 1 তে পরিবর্তন করুন।


অন্তর্নিহিত হলাম ব্যবহার Qএবং k! আপনি s.eh-12@`b
ডিজিটাল

3

রেটিনা, 39 38 37

(?<=(.*¶)*)(?<-1>.)*(.).*¶
$2
T`d`121

1 টি বাইট ধন্যবাদ মার্টিন সংরক্ষণ করা!

ইনপুটটিতে একটি ট্রেলিং লাইনফিডের প্রয়োজন।

তির্যক পায় এবং 0 এবং 2-9 থেকে 1 এবং 1 থেকে 2 তে অনুবাদ করে।

ত্রিভুজগুলি পাওয়ার প্রাথমিক ধারণাটি হ'ল বর্তমান সারির উপরে প্রতিটি সারিটির জন্য একটি ক্যাপচারকে চাপ দেওয়া এবং তারপরে একটি চরিত্রের সাথে মেলে ধরার জন্য একটি ক্যাপচার গ্রহণ করা, তারপরে পরবর্তী অক্ষরটি রাখা।

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


3

জে, 26 22 বাইট

1+1>:i.@#{"_1"."0@":"0

তির্যকটির পদ্ধতি <= 1এবং incrementপদ্ধতি ব্যবহার করে অন্যদের সাথে একই রকম দৃষ্টিভঙ্গি ।

ব্যবহার

আর্গুমেন্ট হিসাবে কেবল পূর্ণসংখ্যার তালিকা প্রয়োজন।

   f =: 1+1>:i.@#{"_1"."0@":"0
   f 1234 4815 1623 4211
2 1 1 2
   f 92345678 23456789 34567890 45678901 56789012 67890123 78901234 89012345
1 1 1 1 1 2 1 1

1 টি লাইন ভাঙ্গার জন্য দুঃখিত ...
NoOneIsHere


2

জাভা, 94 বাইট

int c(int[]d){int p=1,r=0,l=d.length,i=0;for(;i<l;p*=10)r+=(d[l-++i]/p%10==1?2:1)*p;return r;}

জয়ের জন্য শুদ্ধ সংখ্যার অপারেশন! :)

নমুনা ইনপুট / আউটপুট:

8            <-- size
12345678     <-- start of list
23456789
34567890
45678901
56789012
67890123
78901234
89012345     <-- end of list
21111211     <-- result from ungolfed code
21111211     <-- result from golfed code

পুরো প্রোগ্রাম (অবিকৃত কোড সহ):

import java.util.Scanner;

public class Q79444 {
    int cantor_ungolfed(int[] data){
        int power = 1;
        int result = 0;
        for(int i=0;i<data.length;i++){
            result += (((data[data.length-i-1]/power))%10==1? 2 : 1)*power;
            power *= 10;
        }
        return result;
    }
    int c(int[]d){int p=1,r=0,l=d.length,i=0;for(;i<l;p*=10)r+=(d[l-++i]/p%10==1?2:1)*p;return r;}
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] input = new int[n];
        for(int i=0;i<n;i++){
            input[i] = sc.nextInt();
        }
        System.out.println(new Q79444().cantor_ungolfed(input));
        System.out.println(new Q79444().c(input));
        sc.close();
    }
}

2

জাভা, 93 বাইট

String k(int n,int[]a){String s="";for(int i=0;i<n;)s+=(a[i]+s).charAt(i++)<57?9:1;return s;}

Ungolfed

String k(int n, int[] a) {
    String s = "";
    for (int i = 0; i < n; ) 
        s += (a[i] + s).charAt(i++) < 57 ? 9 : 1;
    return s;
}

আউটপুট

Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345

Output:
99991999

Input:
1234
4815
1623
4211

Output:
9999

1

জে, 37 বাইট

f@(9&-@"."0@((>:@#*i.@#){f=:[:,":"0))

সম্ভবত গল্ফ করা যেতে পারে, তবে "ডায়াগোনাল" এর জন্য কোনও কমান্ড থাকলে আমি ভুলে গিয়েছিলাম।


আমি এটি আগে ব্যবহার করে দেখেছি, মার্টিন এখানে অ্যান্টি-ডায়াগোনাল ব্যবহার করেছেন ।
FryAmTheEggman

@ ফ্রিআম দ্য এজম্যান হ্যাঁ, এটি কাছে। আমি এখনও খুঁজছি, কিন্তু সেখানে নাও থাকতে পারে।
কনর ও'ব্রায়েন

এটি একটি অগ্রণী শূন্য উত্পাদন বলে মনে হচ্ছে যদি ত্রিভুজ 9 দিয়ে শুরু হয়
জাগারব

আপনি যদি ইনপুটটি nব্যবহার করে নেন তবে আপনি অঙ্কগুলি সারণী তৈরি করতে পারেন <list> (#:~#&10) <n>। অক্ষটি নির্বাচন করার জন্য (< 0 1) |: <list>যেখানে (< 0 1)একটি বাক্স রয়েছে তা উভয় ব্যবহার করেই প্রথম তির্যকটি পাওয়া যাবে|:
মাইল

1

রেং v.3.3, 60 বাইট

k1-#kaiír1ø          ~; !nb$<
1[å{$}k*$k1-#k)9(-#oa$;]o)ks^$

রেংয়ের জন্য, এটি বরং সহজ ছিল। এখানে চেষ্টা করুন! ইনপুট হল একটি পৃথক সংখ্যার তালিকা।

1: আরম্ভ

k1-#kaiír1ø

kইনপুট সংখ্যা (সংখ্যার সংখ্যা), এবং আমরা 1 দ্বারা হ্রাস এবং লুপ পর্যায়ে পুনরুদ্ধার। aiíসমস্ত ইনপুট লাগে। rইনপুট প্রক্রিয়াজাতকরণের জন্য স্ট্যাকটিকে বিপরীত করে। পরের লাইনে যায়

2: লুপ

1[å{$}k*$k1-#k)9(-#oa$;]o)ks^$

1[শীর্ষস্থানীয় আইটেমটিকে স্ট্যাকের বাইরে নিয়ে যায় এবং একটি নতুন স্ট্যাকে নিয়ে যায়। åঅঙ্কগুলিতে বিভক্ত করুন। {$}অপারেশন "ড্রপ" সমন্বিত একটি কোড ব্লকের দিকে ধাক্কা দেয়; এটি পুনরাবৃত্তি kহয়েছে ( k*) এবং কোড ব্লকটি বাদ পড়েছে ( $k1-#kহ্রাস k। STOS এ )9(রাখে 9, এবং -STOS থেকে টিওএস বিয়োগ করে number #oএই সংখ্যাটি সংরক্ষণ করে oএবং a$;স্ট্যাকের সমস্ত সদস্যকে ফেলে ]দেয় parent প্যারেন্ট স্ট্যাকটি বন্ধ করে oদেয় oback পিছনে রাখে শীর্ষ;। এই আমাদের অঙ্ক করছি সঞ্চয় )। নীচে যাতে আমরা আমাদের looping চালিয়ে যেতে পারেন তা প্যাচসমূহ sসাধারণত অ ইনপুট (অর্থাত, এর সমতার জন্য চেক-1 ), কিন্তু আমরা আমাদের লুপ যখন আউট বিরতি এটি ব্যবহার করতে পারেন k == -1তাইs^উপরে যায় যখন k == -1। স্ট্যাক থেকে $ড্রপ k, এবং আমাদের লুপ আবার শুরু।

3: ফাইনাল

                     ~; !nb$<

<পয়েন্টার বাম দিকে নির্দেশ করে এবং স্ট্যাক থেকে $নেমে kআসে। bবামদিকের আয়না, সুতরাং আমরা এটির মধ্য দিয়ে প্রবেশ করি তবে আঘাত করার সময় এটি পিছনে ফিরে আসে ;a !nএকটি সংখ্যা প্রিন্ট করে যদি এবং কেবলমাত্র আমরা বামে চলে যাই। ~প্রোগ্রামটি শেষ হয় যখন আমরা মুদ্রণ শেষ করব।


1

গণিত 52 বাইট

FromDigits[Mod[#,2]+1&/@Diagonal[IntegerDigits/@#]]&

এটি পিটার টেলর এবং অন্যান্যদের (এসকি কোড ব্যবহার না করে) পদ্ধতির অনুসরণ করে।

উদাহরণ

FromDigits[Mod[#,2]+1&/@Diagonal[IntegerDigits/@ #]]&[{1234,4815,1623,4211}]

2112


1

ClojureScript, 58 টি অক্ষর

#(int(apply str(map-indexed(fn[i x](- 9(get(str x)i)))%)))

প্রকারের প্রয়োজনীয়তা এটিকে প্রয়োজনের তুলনায় কিছুটা দীর্ঘ করে দিয়েছিল এবং map-indexedঅনেকগুলি অক্ষর হওয়া কোনও উপকারে আসেনি।

প্রায়শই আমার জমাগুলি বৈধ Clojure হিসাবেও কার্যকর হয় তবে এটি জাভাস্ক্রিপ্টের সাথে ক্লোজারস্ক্রিপ্টের কিছু ফাঁস ব্যবহার করছে। একটি সংখ্যার এবং স্ট্রিংয়ের বিয়োগটি স্ট্রিংকে একটি সংখ্যার সাথে জোর করে - এটি (- 9 "5")সমান4


1

পিএইচপি, 46/41/40 বাইট

while($a=$argv[++$i])echo($b=9-$a[$i-1])?$b:1;

while($a=$argv[++$i])echo$a[$i-1]==7?6:7;

while($a=$argv[++$i])echo($a[$i-1]%2)+1;

তুলনার জন্য বিভিন্ন অঙ্কের নির্বাচক আমি ভেবেছিলাম "9-সংখ্যার" স্বল্পতম হবে, তবে প্রথম অঙ্কের থেকে শূন্যের বাইরে রাখার জন্য বিশেষ ক্ষেত্রটি এটিকে ছাপিয়ে যায়।

সি এল এল আর্গুমেন্ট থেকে খাওয়ানো:

php -r "while($a=$argv[++$i])echo($b=9-$a[$i-1])?$b:1;" 12345678 23456789 34567890 45678901 56789012 67890123 78901234 89012345
86421864

1

রুবি, 21 বাইট

$><<$_[$.-1].hex%2+1

একটি সম্পূর্ণ প্রোগ্রাম। -nপতাকা নিয়ে দৌড়াও। নিম্নলিখিত ম্যাপিং ব্যবহার করে: n -> n%2+1


1

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

% 9 + 1 কৌশলটি সুয়েভারের উত্তর থেকে ধার করা হয়েছে। একবারের জন্য, .reduceবীটস .map। দ্রষ্টব্য, +=অপারেটর বন্ধনী এড়ানোর জন্য ব্যবহৃত হয়।

a=>+a.reduce((t,n,d)=>t+=(n+t)[d]%9+1,'')

1

পার্ল, 18 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ ইনপুট লাইনগুলি দিয়ে চালান। আউটপুট 2 বাদে 1 হয় যখন ত্রি 1 হয়

cantor.pl

#!/usr/bin/perl -p
pos=$.;$_=/1\G/+1

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