একটি সংখ্যা লিস্টিফাই


19

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

উদাহরণ

0[[0]]

123[[1,2,3]]

-123[[],[1,2,3]]

123.45[[1,2,3],[4,5]]

0.45[[0],[4,5]]

-0.45[[],[0],[4,5]]

-123.45[[],[1,2,3],[4,5]]


অ্যারেতে অঙ্কগুলি কি সিঙ্গল-চর স্ট্রিং হওয়ার অনুমতি রয়েছে?
ডিজাইমা

@জাইমা নং আমি এটি যুক্ত করব।
অ্যাডম

সংখ্যাটি স্ট্রিং হিসাবে নেওয়া যেতে পারে?
উরিল

@ ইউরাইল আপনি যদি এসটিডিইএন থেকে ইনপুট পান তবে হ্যাঁ (কোনও পার্থক্য নেই)। যুক্তি হিসাবে যদি না, আমি মনে করি। মেটা sensকমত্য যাই হোক না কেন।
Adám

2
@ কিউলক্লেফ হ্যাঁ, আসলেই। এটি একটি দীর্ঘ নকশার আলোচনার ফলাফল যা আপনি এখানেl পুরোপুরি মানবতার ডাব্লুআইপি ভাষা, ইন্টারন্টের কমান্ড সম্পর্কে জানতে পারেন
অ্যাডাম

উত্তর:


7

সি #, 60 66 বাইট

using System.Linq;s=>s.Split('-','.').Select(p=>p.Select(c=>c-48))

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


কোনও দৃশ্যমান বাইরের বন্ধনী নেই। আপনার ফলাফলগুলি কি আসলে তালিকাভুক্ত?
Adám

@ আদম হ্যাঁ ( IEnumerable<char[]>) এটি কেবল মুদ্রণ কোড
এগুলিতে

@TheLethalCoder প্রয়োজনীয়তাতে উল্লেখ করা হয়েছে যে প্রয়োজনীয় রিটার্ন টাইপটি সংখ্যা হিসাবে অঙ্কগুলির একটি তালিকা, স্ট্রিং বা অক্ষর নয় যা এই সংখ্যাগুলি প্রদর্শন করে।
কামিল দ্রাকারী

@ কামিলড্রাকারি ওহ দেখে নেই যে
অনুমানটি

@ কামিলড্রাকারি স্থির, আপডেট সম্পর্কে আমাকে জানাতে ধন্যবাদ।
TheLethalCoder

7

জাভাস্ক্রিপ্ট (ES6), 33 44 43 41 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়। উত্সর্গীকৃত 11 10 বাইট চ্যালেঞ্জ স্পেস আপডেট হওয়ার পরে আউটপুটে উপাদানগুলিকে সংখ্যায় রূপান্তর করে।

s=>s.split(/\D/).map(a=>[...a].map(eval))
  • আরনাউল্ডের ব্যবহারের পরামর্শের জন্য একটি বাইট সংরক্ষণ করা হয়েছে eval

এটা পরীক্ষা করো

console.log((
s=>s.split(/\D/).map(a=>[...a].map(eval))
)("-123.45"))


ব্যাখ্যা

s=>

প্যারামিটারের মাধ্যমে স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে বেনামে ফাংশন s
"-123.45"

s.split(/\D/)

সমস্ত অ-অঙ্কের অক্ষর - অর্থাৎ, -এবং স্ট্রিংকে একটি অ্যারেতে বিভক্ত করতে RegEx ব্যবহার করুন.
["","123","45"]

.map(a=>)

অ্যারের উপর মানচিত্র, প্যারামিটার এর মাধ্যমে একটি ফাংশন প্রতিটি পংক্তি ক্ষণস্থায়ী a

[...a]

পৃথক চরিত্রের স্ট্রিংগুলির একটি অ্যারেতে বিভক্ত করুন।
[[],["1","2","3"],["4","5"]]

.map(eval)

সাবহারে এবং evalপ্রতিটি স্ট্রিংয়ের উপরে মানচিত্র , যা এটিকে পূর্ণসংখ্যায় রূপান্তর করে।
[[],[1,2,3],[4,5]]


স্ট্রিং 2D অ্যারে? JSON দেখতে কেমন লাগে?
অ্যাডম

সংখ্যার সংখ্যা অবশ্যই হবে।
Adám

@ অ্যাডাম: 11 বাইট ব্যয়ে আপডেট হয়েছে।
শেগি


5

জেলি ,  13  10 বাইট

ŒṘµ<”/œpV€

একটি মোনাডিক লিঙ্ক একটি নম্বর নিয়ে এবং সংখ্যার তালিকার ফলাফলের তালিকাটি ফিরিয়ে দেয়।

এটি অনলাইন চেষ্টা করুন! (পাদলেখ সমস্ত আসল তালিকাগুলি দেখানোর জন্য কেবল অজগর প্রতিনিধিত্ব প্রিন্ট করে)
... বা পরীক্ষার স্যুটটি দেখুন

কিভাবে?

ŒṘµ<”/œpV€ - Link: number
ŒṘ         - Python representation (yields a string representation of the number)
  µ        - monadic chain separation (call that s)
    ”/     - literal '/' character
   <       - less than? (vectorises) ('.' and '-' are, digit characters are not)
      œp   - partition s at truthy indexes of the resulting list discarding the borders
        V€ - evaluate €ach (list of characters) as Jelly code (vectorises)

এবং আবার জেলি 05AB1E এর চেয়ে ভাল!
এরিক আউটগল্ফার

4

05 এ বি 1 ই , 12 11 বাইট

বাইট সংরক্ষণের জন্য রিলিকে ধন্যবাদ । কোড:

'-'.:'.¡εSï

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

'-'.:            # Replace "-" by "."
     '.¡         # Split on "."
        ε        # Apply to each element..
         S       #   Split into a list of characters
          ï      #   Convert back to int

আপনার কি প্রযুক্তিগতভাবে দরকার ï?
ম্যাজিক অক্টোপাস উরন

@MagicOctopusUrn ওপি বলেছেনThe digits must be actual numbers, not strings.
dzaima

1
এটি লজ্জাজনক, আমি ভাবছিলাম: „-.S€¡6 এর জন্য, তবে তাদের যদি ইন্টস হতে হয় ... অনিশ্চিত।
ম্যাজিক অক্টোপাস উরান

3

পাইথন 2 , 59 বাইট

lambda a:[[]]*(a<0)+[map(int,n)for n in`abs(a)`.split('.')]

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

ফেলিপ নারদী বাটিস্তা থেকে -5 বাইট


আপনার তৃতীয় আউটপুটে [[[1, 2, 3], [4, 5]]]একটি অতিরিক্ত বাহ্যিক তালিকা রয়েছে
ফিলিপ নার্দি বাতিস্তা

স্থির এবং এখনও 64 বাইট লিঙ্কটি
ফিলিপ নার্দি বাতিস্তা

1
mapতালিকা বোধগম্যতার সাথে আপনি যদি আপনার বাইরেরটি পরিবর্তন করেন তবে আপনি 59 বাইটে উঠতে পারেন : লিঙ্ক
ফিলিপ নার্দি বাতিস্তা

2

আসলে , 23 বাইট

'.@;)A$s⌠♂≈⌡M[[]]+@s~@t

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

ব্যাখ্যা:

'.@;)A$s⌠♂≈⌡M[[]]+@s~@t
'.                       push "."
  @;)                    make a copy of the input and move it to the bottom of the stack
     A$s                 absolute value of input, stringify, split on periods
        ⌠♂≈⌡M            convert integer and fractional parts to lists of digits
             [[]]+       prepend an empty list
                  @s~    bitwise negation of sign of input (1 -> -2, 0 -> -1, -1 -> 0)
                     @t  elements in the list starting at that 0-based index (drops the leading empty list if the input was positive)

2

এসওজিএল ভি0.12 , 11 বাইট

Ζ-.ŗ .Θ⌡č¹r

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

স্ট্যাকের শীর্ষে আউটপুটগুলি (কারণ এসওজিএল এটিকে একাধিক স্ট্রিংয়ে রূপান্তর করে কারণ এটি অসি-আর্টের জন্য তৈরি)। ফলাফলটি দেখতে, কনসোলে দেখুন `r`@10:(বাইরের বন্ধনীগুলি স্ট্যাক অ্যারেগুলি) বা কেবল οø∑কোড পরে সংযোজন করুন

Ζ-.ŗ         replace "-" with "."
     .Θ      split on "."s
       ⌡     for each
        č      chop into characters (casts to strings :/)
         ¹   wrap in array (this + for each is like map())
          r  reverse types, vectorizing

2

জাপট (v2.0a0), 12 10 8 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়।

q\D ®¬®n

এটি পরীক্ষা করুন ( -Qকেবলমাত্র দর্শনের উদ্দেশ্যে পতাকা।)

  • 2 বাইট সংরক্ষণ করেছেন জাস্টিনকে ধন্যবাদ ।
  • 2 টি বাইট ETH এর জন্য ধন্যবাদ সংরক্ষণ করেছে।

ব্যাখ্যা

স্ট্রিং এর অন্তর্নিহিত ইনপুট U

q\D

qসমস্ত অ- অঙ্কিত অক্ষরের অ্যারেতে বিভক্ত করতে RegEx ব্যবহার করুন ।

®

অ্যারের উপরে মানচিত্র।

¬

প্রতিটি স্ট্রিং পৃথক অক্ষরের অ্যারে বিভক্ত করুন।

®

অ্যারের উপরে মানচিত্র।

n

পূর্ণসংখ্যায় রূপান্তর করুন।


2
আপনি কি আলাদা করতে পারবেন না \D, যেহেতু কেবলমাত্র অ-সংখ্যাগুলি হবে .এবং -?
জাস্টিন মেরিনার ২

সর্বোত্তম অংশটি হ'ল, আপনার এমনকি /s :-)
ETH প্রোডাকশনগুলিও

@ ইথ প্রডাকশনস: এখন, এটি বেশ মিষ্টি। আমি ভেবেছিলাম যে আমি মাল্টলাইনে গিয়ে সমাপনটি বাদ দিতে সক্ষম হয়েছি /। আমি উভয়কে বাদ দেওয়ার চেষ্টা বিবেচনা করি নি।
শেগি

1

অক্টাভা , 54 বাইট

@(x)cellfun(@(c){c-48},strsplit(num2str(x),{'-' '.'}))

বেনামে ফাংশন যা সংখ্যাকে ইনপুট হিসাবে নেয় এবং সংখ্যক ভেক্টরের একটি সেল অ্যারে তৈরি করে।

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

ব্যাখ্যা

@(x)cellfun(@(c){c-48},strsplit(num2str(x),{'-' '.'}))

@(x)                                                    % Function with input x
                                num2str(x)              % Convert x to string
                       strsplit(          ,{'-' '.'})   % Split at '-' or '.'. Gives a
                                                        % cell array of substrings
    cellfun(          ,                               ) % To each substring apply
                                                        % the following function
            @(c){c-48}                                  % Subtract 48 from each char
                                                        % and pack into a cell

1

সি (জিসিসি) , 170 164 152 146 144 বাইট

এটি কিছুটা নিচে গল্ফ করতে সক্ষম হওয়া উচিত ...

#define P printf
#define V *v[1]
main(c,v)char**v;{for(V^45?P("[[%c",V++):P("[[],[%c",V++,V++);V;V^46?P(",%c",V++):P("],[%c",V++,V++));P("]]");}

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


আমি মনে করি আপনি কিছু বাইট সংরক্ষণ করতে পারবেন #define P printf(এবং তারপরে Pকলগুলিতে বন্ধনীর কাজ বাদ দিয়ে
সায়োস

1

হ্যাঁ আমিও এটি চেষ্টা করেছিলাম, বর্তমানে আমি মাত্র 13 পেয়েছি (আমি এটি পোস্ট করব তবে মনে করি এটি অবশ্যই কম হতে পারে) এর পরিবর্তে (এটির সাথে সংঘর্ষ হয় ) 0.45রিটার্ন[[],[4,5][[0],[4,5]]-45
জোনাথন অ্যালান

@ জোনাথন অ্যালান ওহ হ্যাঁ ... নিশ্চিত না আমি কোথায় পেলাম? ওহ অপেক্ষা কর! ফিক্সিং ... ঠিক আছে ঠিক আছে। কে মনে হতে পারে জেলি parses 0এবং .45এর 0.45আলাদাভাবে ... এবং এটি হিসাবে আছে আউটপুট খুব।
এরিক আউটগল্ফার

1

আসলে , 16 বাইট

$'.'-(Æ'.@s⌠♂≈⌡M

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

ব্যাখ্যা:

$'.'-(Æ'.@s⌠♂≈⌡M Implicit eval'd input
$                Convert to str
 '.              Push '.'
   '-            Push '-'
     (           Rotate stack left
      Æ          Pop a, b, c; push c.replace(b, a)
       '.        Push '.'
         @       Pop a, b; push b, a (swap)
          ⌠♂≈⌡   Push function ♂≈
           ♂       Map
            ≈        Convert to int
              M  Map

1
নির্মাতাকে আউটগল্ফ করেছেন, দুর্দান্ত।
জাকারি

@ জ্যাচারý এটি কেবলমাত্র অ্যালগরিদম নির্বাচনের বিষয়।
এরিক দি আউটগল্ফার

এবং এটি মেগো আপনি পরাজিত করেছেন, অবশ্যই ডেনিসকে নয় :)
জ্যাচার

@ জাকারহ আচ্ছা, এই চ্যালেঞ্জটি দু'বার সুষ্ঠু হওয়ার জন্য ...
এরিক দ্য আউটগল্ফার

1

আর, 51 47 72 বাইট

x=RG::s(strtoi(s(gsub('-','.',scan()),on='\\.')))
x[is.na(x)]=list(NULL)

আমি RGলাইব্রেরি ভালবাসি ।

খালি তালিকাটি আসলে খালি ছিল তা নিশ্চিত করতে 26 বাইট যুক্ত করতে হয়েছিল।

               gsub('-','.',scan())             # replace - with . in input; also converts to string
             s(                    ,on='\\.')   # split string on '.'
      strtoi(                                )  # convert to numeric
RG::s(                                        ) # convert to lists of digits

    x[is.na(x)]=list(NULL)                      # converts list of `NA` to empty list

উদাহরণ আউটপুট:

> x=RG::s(strtoi(s(gsub('-','.',-123.45),on='\\.')))
> x[is.na(x)]=list(NULL)
> x
[[1]]
NULL

[[2]]
[1] 1 2 3

[[3]]
[1] 4 5

ভাল, numeric(0)একটি খালি সংখ্যা তালিকা আছে বা list()বা NULL?
: Giuseppe

আমি এটি তৈরির জন্য ঠিক NULLকরেছিলাম কিন্তু এখন নিশ্চিত যে এটি করার কোনও গল্ফিয়ার উপায় আছে। সম্ভবত আমি এটি ফিরে আসতে হবে।
বিএলটি

1

পার্ল 5 , 56 54 + 1 (-পি) = 55 বাইট

$_="[[$_]]";s/\D\K\./0./;s/\d(?=\d)/$&,/g;s/-|\./],[/g

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

ডোম আমাকে $ & সম্পর্কে মনে করিয়ে দেওয়ার কারণে দুটি বাইট সংরক্ষণ করেছেন

ব্যাখ্যা:

$_="[[$_]]";        # Add opening and closing to ends of strings
s/\D\K\./0./;       # handle the case of .45 or -.45 by inserting 0 before
                    # the decimal.  Otherwise, .45 & 45 would be ambiguous.
s/\d(?=\d)/$&,/g;   # Put a comma between numbers.
s/-|\./],[/g        # Turn - and . into separators between lists

এটির সাথে একটি ছোট্ট খেলা ছিল এবং এটি ভাঙ্গাটি আরও খাটো হয়ে গেছে। নিশ্চিত না যে আপনি আমার উপর ভিত্তি করে এটি সঙ্কুচিত করতে নিজের উপর ভিত্তি করে একত্রিত করতে পারেন? Online এটি অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস

1
ব্যবহৃত $ এবং আপনার থেকে। আমি মনে করি যে দুটি এখন মূলত সমতুল্য, এটি ছাড়া আমার খনি ".45" বনাম "45" কেস পরিচালনা করে।
এক্সকালি

আহ্, হ্যাঁ, মিস করলাম!
ডম হেস্টিংস

1

পার্ল 6 , 23 বাইট

+«*.split(/\D/)».comb

এটা পরীক্ষা করো

সম্প্রসারিত

\            # numify each of the following (possibly in parallel)
*\             # WhateverCode lambda (this is the input)
.split(/\D/)\  # split on non-digits ( . and - )
».comb         # split each of those into individual characters

নোট যে …».combতুলনায় একটি উচ্চতর নজির+«…





0

পার্ল 6 , 22 বাইট

{m:g/^\d*|\d+/».comb}

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

প্রত্যাশিত তালিকার উপাদানগুলি স্ট্রিং, তবে পার্লের মতো স্বাভাবিক, এগুলি সংখ্যা হিসাবে ব্যবহার করা যেতে পারে এবং স্পষ্টত রূপান্তরিত হবে; তারা সমস্ত ব্যবহারিক উদ্দেশ্যে "প্রকৃত সংখ্যা"। তাদের তাত্ক্ষণিক উপস্থাপনায় তাদের সংখ্যা হতে বাধ্য করতে, কেবলমাত্র আরও তিনটি বাইটের জন্য "+« "দিয়ে কোড ব্লকের বিষয়বস্তুর উপসর্গের প্রয়োজন।


চ্যালেঞ্জটি বিশেষভাবে বলেছে: " অঙ্কগুলি অবশ্যই স্ট্রিং নয়, প্রকৃত সংখ্যা হতে হবে। ”, সুতরাং সম্ভবত অন্তর্ভুক্ত করা উচিত।
ব্র্যাড গিলবার্ট 3

0

রুবি, 75 বাইট

->(x){(x<0?[[]]:[])+x.abs.to_s.split('.').map{|y|y.chars.map{|z|z.to_i}}}

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


1
আপনি কি এই সমস্ত সাদা স্থান সরাতে পারেন?
TheLethalCoder

হ্যাঁ, তুমি ঠিক বলেছ!
গ্রেগরি

কিছু সিনট্যাক্স টুইটের সাথে একই: অনলাইনে চেষ্টা করে দেখুন! (বিটিডাব্লু, আপনি টিআইওতে শিরোলেখ এবং পাদলেখ ব্যবহার করলে কোডের ডান দিকে প্রদর্শিত আকারটি সমাধানের প্রকৃত আকার হবে))
মানটওয়ার্ক

স্থির, সমস্ত ইনফোগুলির জন্য ধন্যবাদ।
গ্রেগরি

আপনি অদলবদল করতে পারেন .map{z|z.to_i}জন্য.map &:to_i
Cyoce
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.