ঘূর্ণমান গড়


18

একটি ইনপুট পূর্ণসংখ্যা দেওয়া হয় n >= 10, পূর্ণসংখ্যার সমস্ত ডুপ্লিকেট করা ঘূর্ণনের গড় আউটপুট।

উদাহরণস্বরূপ, ইনপুটগুলির জন্য 123, ঘূর্ণনগুলি 123(কোনও ঘূর্ণন নয়), 231(একটি ঘূর্ণন) এবং 312(দুটি ঘূর্ণন)। এগুলির গড় হয় (123 + 231 + 312) / 3বা 222

অন্য উদাহরণ হিসাবে, নিতে 4928। ঘুর্ণন হয় 4928, 9284, 2849, এবং 8492। এই চারটি সংখ্যার গড় নেওয়া সমান 6388.25

অন্য উদাহরণস্বরূপ, ইনপুট জন্য 445445, deduplicated ঘুর্ণন হয় 445445, 454454এবং 544544, তাই আউটপুট 481481

ইনপুটগুলির জন্য 777, কেবলমাত্র একটি অনুলিপি ঘূর্ণন রয়েছে, সুতরাং আউটপুট 777

বিধি

  • প্রযোজ্য হলে, আপনি ধরে নিতে পারেন যে ইনপুট / আউটপুটটি আপনার ভাষার নেটিভ পূর্ণসংখ্যার প্রকারে ফিট করবে।
  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক পদ্ধতি দ্বারা দেওয়া যেতে পারে ।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

আমরা কি অঙ্কের তালিকা হিসাবে ইনপুট নিতে পারি?
ডেনিস

3
@ ডেনিস শিওর, ঠিক আছে। কিছু বাইট সংরক্ষণ করুন। : পি
অ্যাডমবর্কবার্ক

3
আপনার কি এমন উদাহরণ রয়েছে যেখানে ডুপ্লিকেশনটি আউটপুট পরিবর্তন করে? আপনার 445445 উদাহরণে, প্রতিটি 3 টি অনন্য ঘূর্ণন দু'বার ঘটে, তাই এগুলি রেখে আউটপুট পরিবর্তন হয় না।
কলডো

@ ক্যাল্ডো না, আমি (ম্যানুয়ালি) একজনের সাথে আসতে সক্ষম হয়েছি না, তবে এর অর্থ এই নয় যে একজনের অস্তিত্ব নেই, তাই আমি নকলের বিধিগুলি যথাযথভাবে রেখে দিয়েছি।
অ্যাডমবর্কবার্ক

13
@Kaldo আসুন d এর সংখ্যা সংখ্যা হতে এন এবং k যেমন যে আবর্তিত পূর্ণসংখ্যা ক্ষুদ্রতম ইতিবাচক এন বাম প্রজনন করতে ডিজিটের এনQ এবং 0 ≤ r <k নিন যাতে d = qk + r হয় । ঘোরানো হচ্ছে এন উভয় এবং QK বাঁদিকে সংখ্যা উত্পাদ উচিত এন , তাই দ = 0 । এর অর্থ প্রতিটি অনন্য ঘূর্ণন Q বার হয়, সুতরাং ঘূর্ণনগুলি প্রতিলিপি গড়ের প্রয়োজন হয় না।
ডেনিস

উত্তর:


11

পাইথন 3 , 38 36 বাইট

lambda*n:10**len(n)//9*sum(n)/len(n)

অঙ্কগুলি পৃথক যুক্তি হিসাবে গ্রহণ করে। পাইথন 3 টি পরামর্শ দেওয়ার জন্য @ রডকে ধন্যবাদ, 2 বাইট সংরক্ষণ করুন।

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


পাইথন 2 এ ফিরে সরে যেতে এবং একটি অ্যারে রেখে একটি অতিরিক্ত বাইট সংরক্ষণ করা যায়।
ডেনিস

আপনার আলাদা আলাদা আর্গুমেন্ট হিসাবে অঙ্কগুলি নেওয়ার দরকার নেই, একটি নিয়মিত পুরানো তালিকা ঠিক ঠিক করে দেয়
Asone Tuhid

9

এপিএল (ডায়ালগ) , 9 বাইট

10⊥≢⍴+/÷≢

আর্গুমেন্ট হিসাবে অঙ্কের ভেক্টর গ্রহণকারী একটি মোনাডিক ফাংশন।

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

আমি অঙ্কগুলির গড় গ্রহণ করি +/÷≢, তারপরে এটি ইনপুটটির দৈর্ঘ্য দ্বারা পুনরাবৃত্তি করি ≢⍴এবং অবশেষে বেস 10 থেকে রূপান্তর করি।

ধারণামূলকভাবে, আমি আবর্তনের যোগফল নিচ্ছি (বহন ছাড়াই):

 4  2  9  8
 2  9  8  4
 9  8  4  2
+8  4  2  9
 -----------
 23 23 23 23

এটি মাত্র 4+2+9+84 বার পুনরাবৃত্তি হয়। তারপরে বেস থেকে রূপান্তর করা 10(যা আমার জন্য বহন করে) এবং দৈর্ঘ্য দ্বারা ভাগ করা। যদিও আমি দৈর্ঘ্যটি আগে ভাগ করেছিলাম কারণ এটি সমতুল্য এবং বাইট সংরক্ষণ করে।


1
এটি জেনিয়াল: ডি
লিও

@ লিও এফডব্লিউআইডাব্লু উত্তরগুলি যে কোনও প্রতিরূপের অঙ্ক দ্বারা
গড়কে

3

জাভা 10, 163 137 76 72 71 বাইট

n->(Math.pow(10,n.size())-1)/9*n.stream().mapToInt(i->i).sum()/n.size()

-36 বাইট @ নেভায়ে ধন্যবাদ ।
-61 ধন্যবাদ বাইট @ OlivierGrégoire একটি বন্দর তৈরি করে @Dennis 'পাইথন 3 উত্তর
স্ট্রিংয়ের পরিবর্তে অঙ্কের তালিকা হিসাবে ইনপুটটি গ্রহণ করে -1 বাইট।

ব্যাখ্যা:

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

n->                                 // Method with String parameter and double return-type
  (Math.pow(10,n.size())-1)/9       //  Repunits the same length as the input-size
  *n.stream().mapToInt(i->i).sum()  //  multiplied by the sum of digits
  /n.size()                         //  divided by the input-size

1
151 বাইট n->{var s=new java.util.HashSet();var r=0d;for(int l=n.length(),x;l-->0;)if(s.add(x=new Integer(n=n.substring(1)+n.charAt(0))))r+=x;return r/s.size();}n->java.util.stream.IntStream.range(0,n.length()).map(i->new Integer(n.substring(i)+n.substring(0,i))).distinct().average().getAsDouble()
:,

1
orElse(0)পরিবর্তে ব্যবহার করুন getAsDouble()
অলিভিয়ার গ্রাগোয়ার

অন্যের সমাধানের ভিত্তিতে 69 বাইট(int)প্রয়োজনে 5 টি মোট বাইট ব্যবহার করে গোল করুন
অলিভিয়ার গ্রাগোয়ার

আপনাকে দ্বিগুণ হিসাবে কাস্ট করার দরকার নেই: Math.powইতিমধ্যে এটি যত্ন নেয় takes এটি আপনাকে 3 বাইট ছাড়বে।
অলিভিয়ার গ্রাগোয়ার

@ অলিভিগারগ্রোওয়েরে আমি যদি এটি করি তবে এটি ভুল ফলাফল দেবে। Int- এ ঢালাই তাই আমরা ব্যবহৃত হয় পূর্ণসংখ্যা সংখ্যার যোগফল 9 দ্বারা -divide এবং সংখ্যাবৃদ্ধি। তবেই গড় পেতে দ্বিগুণ হওয়া উচিত। যদি আমি উভয় মুছে ফেলি (int)এবং *.1এটি উদাহরণস্বরূপ ইনপুটটির 6388.888...পরিবর্তে আউটপুট 6388.25দেয় 4928। এবং যদি আমি পুরো জিনিসটি বা কেবল .powএকটি intপরিবর্তে কাস্ট করি তবে এটি আউটপুট হবে 6388
কেভিন ক্রুইজসেন 11

3

কাস্তে , 5 বাইট

d´MKA

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

ব্যাখ্যা

d´MKA
    A  Take the average of the digits
 ´MK   Replace each element of the original list with the average
d      Join the list to get a number

কাস্তে , 7 বাইট

A§modṙŀ

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

ব্যাখ্যা

A§modṙŀ
      ŀ  Take the range [1..length(input)]
 §m  ṙ   Rotate the input by each element of the range
   od    Convert each list of digits to a number
A        Take the average of the list

1
ধাঁধাটির জন্য, কমপক্ষে একটি 5বাইট সমাধান রয়েছে
এইচপিউইজ

@ এইচ.পি.উইজ আমি বুঝতে পারি না, আপনি কি কোনও ইঙ্গিত দিতে পারেন? : পি
লিও

@ লিও নেই বা আছে ŀএবং প্রথম অক্ষরটি (বাম দিকে) নয়A
এইচ.পি.উইজ

3

আর , 84 73 64 বাইট

function(D,K=sum(D|1))mean(array(D,K+1:0)[1:K,1:K]%*%10^(K:1-1))

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

অঙ্কের তালিকা হিসাবে ইনপুট।

11 বাইট ছাঁটাই করার জন্য মিকিটিকে ধন্যবাদ! ডেনিসের প্রমাণ দিয়ে ছেটে যাওয়া 8 টি বাইট যা নকল করা অপ্রয়োজনীয়।


সামান্য অন্যভাবে সংখ্যা ঘোরাতে সঙ্গে 73 জন্য
MickyT

@ মিকিটি আআআহহহ রিসাইক্লিংয়ের চতুর ব্যবহার!
জিউসেপে

@ মিকিটি একটি বাইটের array(D,K+1:0)চেয়ে ছোট matrix(D,K+1,K)
জিউসেপ 21

2

vনা সহ y, আকর্ষণীয়।
ম্যাজিক অক্টোপাস উরন

gFÀD})¨Osg/আমি ভাবছিলাম যেখানে ছিল।
যাদু অক্টোপাস উরন

আপনি কি জানেন কীভাবে .æ = pop a compute permutations by function, usage: .æ<FUNC>}এখনও কমান্ডটি ব্যবহার করবেন ? আমি হয় না, তবে এটি এটি উপযুক্ত মনে হয়।
যাদু অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টপাস ইউ আর ভি ছাড়া Y আবর্তন জি (ইনপুট) বার সম্পাদন করার জন্য আমি সবচেয়ে সংক্ষিপ্ত সমাধানটি খুঁজে পেতে পারি। আমি। Checking যাচাই করছি, দেখে মনে হচ্ছে না এটি <FUNC>
register

2

স্ট্যাক্স , 6 বাইট

ñJä⌠╤►

এটি চালান এবং এটি ডিবাগ করুন

এই প্রোগ্রামটি ইনপুট হিসাবে একটি উদ্ধৃতি-বিস্মৃত স্ট্রিং নেয় এবং হ্রাস ভগ্নাংশ হিসাবে গড়কে প্রকাশ করে। উদাহরণস্বরূপ 777/1 ঘূর্ণনগুলি ডি-সদৃশ করার দরকার নেই। এটি কখনই ফলাফল পরিবর্তন করে না।

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এটির মতো দেখাচ্ছে।

:)  get all character rotations
{em convert strings back to integers
:V  mean - integer inputs means result will be rational

এটি চালান


2

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

{.sum/$_*1 x$_}

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

গড় প্রতিটি দশমিক পজিশনে প্রয়োগ করা ডিজিটের গড়, তাই অঙ্কের গড় বার 111 .... 1 1 x $_টিয়ের একটি স্ট্রিং উত্পাদন করে যা গুণ দ্বারা স্ট্রিংগুলিতে জোর হয়ে যায়।

ইনপুট হিসাবে অঙ্কের একটি তালিকা নেয়। একটি অনুক্রমের যোগফলের আগে একটি। ক্যাশে প্রয়োজন, এবং একটি সংখ্যা বা স্ট্রিং ইনপুট একটি .comb প্রয়োজন হবে।



1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 43 বাইট

x=>eval(x.join`+`)*'1'.repeat(n=x.length)/n

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

আমরা কি অঙ্কের তালিকা হিসাবে ইনপুট নিতে পারি? - ডেনিস min 7 মিনিট আগে

@ ডেনিস শিওর, ঠিক আছে। কিছু বাইট সংরক্ষণ করুন। : পি - অ্যাডমবর্কবার্ক 3 মিনিট আগে




1

এপিএল (ডায়ালগ ইউনিকোড) , 21 14 বাইট এসবিসিএস

+/≢÷⍨⍳∘≢(⍎⌽)¨⊂

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

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

জন্য আদম ধন্যবাদ একটি জ্ঞানগর্ভ 7 বাইট সংরক্ষণ

কিভাবে?

+/≢÷⍨⍳∘≢(⍎⌽)¨⊂  Main fn, example argument '123'
                Enclose the argument (turns it into a scalar)
             ¨   Use each of the left arguments to
         ( ⌽)    Rotate, then
                Convert strings into numbers
      ⍳∘≢        Tally (≢) the argument, then index (⍳) from 1. 
                 Returns 1 2 3 for a 3 digit argument, and rotates the argument 1, 2, then 3 times.
                Use the result as left argument for
    ÷            Divide
                By the number of rotations
+/               And sum the results

: | এখনও এপিএল মন্তব্যে অভ্যস্ত হতে পারে না
ASCII- কেবল



1

জে , 10 বাইট

10#.#$+/%#

এটি জে.এইচ.পি.উইজের দুর্দান্ত এপিএল সমাধানের একটি বন্দর is

আর্গুমেন্ট হিসাবে অঙ্কের একটি তালিকা নেয়।

ব্যাখ্যা:

+/%#অঙ্কগুলির গড় ( তাদের সংখ্যা দ্বারা %অঙ্কের যোগফলকে ভাগ করুন )+/#

#$অঙ্কের সংখ্যা অনুযায়ী গড়ের অনুলিপিগুলির একটি তালিকা তৈরি করে

10#. ফর্ম বেস 10 রূপান্তর করুন

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


1

পার্ল 5 -lpF , 24 22 বাইট

#!/usr/bin/perl -lpF
$_=1x@F/s/./+$&/g*eval

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

অঙ্কের তালিকা হিসাবে এটি করা মাত্র 1 বাইট ছোট এবং প্রতারণার মতো মনে হয়:

#!/usr/bin/perl -p
$;+=$_}{$_=1x$./$.*$

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


কি usrt? : পি
এএসসিআইআই-

@ এএসসিআইআই-শুধু অপেক্ষা করুন, /usrtডিরেক্টরিতে আপনার এক্সিকিউটেবল নেই ? যাইহোক, স্থির। ধন্যবাদ
টন হসপেল




1

সি ++, 218 208 বাইট

-10 বাইট জ্যাকারিকে ধন্যবাদ ý

#include<set>
#include<cmath>
float a(int m){std::set<int>a;int n=m,t,c=0;for(;n>0;n/=10)++c;for(;n<c;++n){a.insert(m);t=m%10;m=m/10+std::pow(10.f,c-1)*t;}int s=0;for(int v:a){s+=v;}return float(s)/a.size();}

এবং, পরীক্ষা করতে:

int main() {
    printf("%f\n%f\n%f\n%f\n",a(123),a(4928),a(445445),a(777));
}

1
আপনি মধ্যে শূণ্যস্থান প্রয়োজন না #includeএবং <, এবং আপনি অপসারণ করতে পারেন {}প্রায় উভয় ++c;এবং s+=v;। আপনি int s=0অন্যান্য ভেরিয়েবলগুলির সাহায্যে শুরুতে স্থানান্তর করতে সক্ষম হতে পারেন ।
জাচারি

1
এছাড়াও, আমি মনে করি না যে n=0লুপের জন্য আপনার দ্বিতীয়টির দরকার যেমনটি ততক্ষণে পৌঁছানো উচিত ছিল 0m/=10;m+=std::pow(10.f,c-1)*t;=> m=m/10+std::pow(10.f,c-1)*t। এবং কাজের intপরিবর্তে ব্যবহার করবেন না auto?
জাকারি

আপনি এখনও int s=0;আপনার অন্যান্য ভেরিয়েবলগুলির সাথে চলাচল করতে পারেন , এবং আপনার চারপাশের ধনুর্বন্ধনী প্রয়োজন s+=v;?
জাকারি


n>0=> nকাজ করতে পারে।
জ্যাকারি

0

পাইথ, 12 বাইট

csms.<zdlzlz

সম্ভবত অসম্পূর্ণ।

c         lz     Divide by the length of the input:
 s               Reduce by +
  m     lz       Map over d = [0 ... the length of the input]:
   s.<zd         Shift the input d characters to the left and cast to int

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


একটি অন্তর্নির্মিত গড় কার্যকারিতা আছে o। যদি আপনি এটি করেন এবং অঙ্কগুলির তালিকা হিসাবে I / O করেন তবে আপনি এটি 8 টি বাইটে নামিয়ে আনতে পারেন ।

আহ, আমি নিচ্ছিলাম "প্রযোজ্য হলে, আপনি ধরে নিতে পারেন যে ইনপুট / আউটপুটটি আপনার ভাষার নেটিভ পূর্ণসংখ্যার প্রকারে ফিট করবে।" এই হিসাবে গ্রহণ করা হয় যে এটি একটি পূর্ণসংখ্যা হতে হবে মানে Q
আরকে

0

জে, 23 বাইট

(+/%#)".~.(|."0 1~i.@#)

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

ব্যাখ্যা

          (|."0 1~i.@#)  | All rotations
        ~.               | Deduplicate
      ".                 | Convert each to int
(+/%#)                   | Average


0

Clojure, 139 বাইট

#(let[n(count %)G(set(apply map list(for[i(range n)](take n(drop i(cycle %))))))](/(apply +(for[g G](read-string(apply str g))))(count G)))

অক্ষরের ক্রমকে পূর্ণসংখ্যায় রূপান্তর করার জন্য বেশ উপ-অনুকূল ভাষার বৈশিষ্ট্য।


0

ডিসি, 37 বাইট

এটি একটি সম্পূর্ণ প্রোগ্রাম, ইনপুট পড়া এবং আউটপুট মুদ্রণ:

?1sd[O~rzsadO<x+ldO*1+sd]dsxxOkld*la/p

এটি সংখ্যাটিকে তার অঙ্কগুলিতে পৃথক করে এবং উপযুক্ত দৈর্ঘ্যের পুনরুক্তি দ্বারা অঙ্কগুলির গড়ের গুণককে (যা আমরা যেমন তৈরি তেমন নির্মিত হয় d) দ্বারা কাজ করে।

?                               # read input
 1sd                            # initialize d=1
    [                   ]dsxx   # define and execute recursive macro x:
     O~r                        #   remainder and quotient of /10
        zsa                     #   a = number of digits
           dO<x                 #   recurse if needed
               +ldO*1+sd        #   increment repdigit d
                             Ok         # after executing x, set precision 
                               ld*la/   # multiply by repdigit; divide by a
                                     p  # print the result
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.