Addition der Ziffern und der umgekehrten Ziffern

26

Bei einer Zahl> 0 wird die Summe mit allen Ziffern (1 .. n) verkettet und umgekehrt ausgegeben und addiert. Zum Beispiel mit n = 6:

Die Zahlen 1 bis 6 verkettet:

123456

Rückgängig gemacht:

654321

Wenn Sie diese addieren, erhalten Sie: 777777. Ein weiteres Beispiel ist n = 11:

1 2 3 4 5 6 7 8 9 10 11 > 1234567891011

und

11 10 9 8 7 6 5 4 3 2 1 > 1110987654321

Addieren Sie diese Werte, erhalten Sie 2345555545332. Dies ist auch als A078262 bekannt .

Kürzester Code gewinnt!

Lamaro
quelle
Gibt es eine Bindung an noder müssen wir beliebig große ganze Zahlen unterstützen?
LegionMammal978
Ich denke, der Standard ist "begrenzt durch max(256,yourlanguagesdefaultintegertypelimit)". Aber es sollte angegeben werden.
CalculatorFeline
@ LegionMammal978 So hoch wie Ihre Sprache unterstützt.
Lamaro
Wichtiger Testfall:, 10der geben sollte 23333333231.
Adnan

Antworten:

9

05AB1E, 7 Bytes

LDRJsJ+

Probieren Sie es online aus.

Erläuterung

LDRJsJ+

L        range from 1 .. input
 D       duplicate
  R      reverse
   JsJ   convert both arrays to strings
      +  add (coerces both strings to ints)
ein Spaghetto
quelle
Ich bin sehr verwirrt über die Designauswahl, die dazu +führt, dass Listen eine verschachtelte Addition ausführen, während Zeichenfolgen in Ints konvertiert und dann hinzugefügt werden. Aber hier hat es wohl geklappt! : P
FryAmTheEggman
@FryAmTheEggman Ich werde jedoch verschachtelte Addition entfernen. Es war noch nie nützlich, seitdem ich es implementiert habe ...
Adnan
3
Meine Güte, ich verlasse PPCG für zwei Stunden und du benennst dich in Aqua Tart um, während ich weg bin ... Oh, das Leben eines PPCG-Benutzers.
ETHproductions
6

Gelee, 9 Bytes

R,U$DF€ḌS

Live-Codierung 

Lynn
quelle
2
Bin ich es oder sehe ich, dass dieser Code heimlich U $ D stiehlt?
Gcampbell
5

CJam, 15 bis 14 Bytes

Vielen Dank an Martin für das Rasieren eines Bytes!

ri,:)_W%si\si+

Probieren Sie es online!

GamrCorps
quelle
1 Byte weniger, wenn Sie die Zeichenfolge anstelle des numerischen Arrays umdrehen:ri,:)s_W%i\i+
Luis Mendo
Entschuldigung, ich denke, meine Version funktioniert nicht für10
Luis Mendo
1
Dieser Code ist insgeheim glücklich. :)
Cyoce
4

Pyth, 12 10 Bytes

ssMjLk_BSQ

Danke an @FryAmTheEggman für 2 Bytes!

Qist der Eingang, Smacht es zu [1, 2, ..., input()], _Bes gabelt über _(Rückwärts) zu erstellen [rng, rev(rng)], jLkes bildet über joindurch k(die die „leere Zeichenfolge“ Variable ist), sMordnet intüber diese resultierende Array, und sberechnet schließlich die Summe.

Türknauf
quelle
4

JavaScript (ES6), 70 67 64 Byte

a=>(z=[...Array(a)].map((b,c)=>c+1)).join``- -z.reverse().join``

Korrigiert, um die Anforderungen zu erfüllen, da alter Code unter Missverständnissen der Eingabe erstellt wurde.

Mwr247
quelle
@TimmyD Eine Erklärung hinzugefügt.
Mwr247
@TimmyD OH! > _ <Mein Missverständnis der Herausforderung ist, wie ... Ja, ich muss das beheben.
Mwr247
@TimmyD Ich habe lange genug gebraucht, um wieder online zu gehen. Es ist jetzt behoben, und danke, dass Sie es verstanden haben.
Mwr247
Wie für eine andere Antwort angemerkt, funktioniert dies nur, wenn der Parameter a zwischen 1 und 12 liegt, das ist wirklich zu wenig
edc65
@ edc65 Per OP's Kommentar ist das groß genug.
Mwr247,
3

Python 3, 74

6 Bytes gespart dank DSM.

Nichts zu aufregendes, schließen Sie sich den Bereichen an, konvertieren Sie sie in Ints und fügen Sie sie hinzu.

lambda x:sum(int(''.join(list(map(str,range(1,x+1)))[::i]))for i in(1,-1))
Morgan Thrapp
quelle
3

Retina , 71

Weil es offensichtlich das falsche Werkzeug für den Job ist.

.+
$*a:$&$*
+`^(a+)a\b(.*)\b1(1+)$
$1 $& $3
 ?(\w)+ ?
$#1
\d+:?
$&$*c
c

Probieren Sie es online aus.

Funktioniert für Eingaben bis 6, aber der Online-Interpreter läuft danach ab.

Digitales Trauma
quelle
1
Sie können es durch Entfernen der letzten Zeile auf 74 verkürzen und Wechsel (c)+zu c.
Daavko
@daavko ja natürlich danke!
Digital Trauma
Außerdem $&$*c-> $*cund \d+:?-> \d+und es ist 70. Und aus irgendeinem Grund funktioniert es weiter ...
Daavko
3

Jolf, 9 Bytes

Probieren Sie es hier aus! Ersetzen durch \x10.

+P►γzjP_γ
    zj    range 1...j
   γ      γ = ^
  ►        ^ .join("")
 P         as a number
+     P_γ  and γ reversed

Möglicherweise kann ich Golf spielen, indem ich mich im Typ Casting bewege.

Conor O'Brien
quelle
Du schlägst Pyth und Türklinke!
Cyoce
@Cyoce also habe ich O_O
Conor O'Brien
3

JavaScript (ES6), 67 66 Bytes

n=>(a=[...Array(n+1).keys()].slice(1)).join``- -a.reverse().join``

Ja, das ist ein Leerzeichen. Pfui. Zumindest @Downgoat hat mir geholfen, ein Byte zu speichern.

Neil
quelle
1
Sie können das erste entfernen +und das + +-> machen - -, um ein Byte zu speichern
Downgoat
n => (a = [... Array (n)]. map (_ => n -)). join- -a.reverse().join
edc65
Hinweis: Bei Verwendung von einfacher Js-Arithmetik ist dies auf die Werte 1 ... 12
edc65
2

Im Ernst, 12 Bytes

,R;Rεj≈@εj≈+

Probieren Sie es online!

Erläuterung:

,R;Rεj≈@εj≈+
,R;           push two copies of range(1, input()+1)
   R          reverse one copy
    εj≈@εj≈   concatenate both and cast both to ints
           +  add
Mego
quelle
2

PowerShell, 35 Byte

param($a)+-join(1..$a)+-join($a..1)

Konvertiert die Eingabe mit .., dann in Bereiche-join fügt sie dann zusammen und addiert sie auf.

Funktioniert für Eingaben von bis zu 138, während 139gibt Infinity, 140und darüber wird ein äußerst ausführlicher Casting-Fehler angezeigt:

Cannot convert value "12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413
5136137138139140" to type "System.Int32". Error: "Value was either too large or too small for an Int32."
AdmBorkBork
quelle
2

Pyth - 8 Bytes

siRT_BSQ

Probieren Sie es hier online aus .

Maltysen
quelle
2
Ich denke, das funktioniert nicht für 10oder11
Luis Mendo
2

JavaScript (ES6), 99

Dies fügt Ziffer für Ziffer hinzu, sodass Zahlen verarbeitet werden können, die deutlich über der 53-Bit-Genauigkeit von Javascript liegen

n=>eval("for(a=b=c=r='';n;a+=n--)b=n+b;for(i=a.length;i--;r=c%10+r)c=(c>9)-(-a[i]-b[i]);c>9?1+r:r")

Prüfung

f=n=>eval("for(a=b=c=r='';n;a+=n--)b=n+b;for(i=a.length;i--;r=c%10+r)c=(c>9)-(-a[i]-b[i]);c>9?1+r:r")

// Less golfed
U=n=>{
  for(a=b=c=r=''; n; --n)
      b=n+b, a+=n;
  for(i=a.length; i--; r = c%10+r) 
      c=(c>9)-(-a[i]-b[i]);
  return c>9? 1+r : r;
}

function test() {
  var n=+I.value
  R.textContent=f(n)
}  

test()
N: <input id=I value=11 oninput="test()"> -> <span id=R></span>

edc65
quelle
Scheint nicht für 9 zu funktionieren. Warum nicht auch cmit den anderen Variablen initialisieren ?
Neil
Du hast meine Zustimmung.
Neil
2

Brachylog , 24 Bytes

:1fLrcC,Lc+C=.,{,.:1re?}
Tödlich
quelle
2

MATL , 13 Bytes

:tP2:"wVXvU]+

EDIT (20. MAI 2016) Der Code in den Link verwendet Xzstatt Xv, in der Sprache , auf die jüngsten Veränderungen zurückzuführen ist .

Probieren Sie es online!

:                % range [1,2,...,n], where n is input
 tP              % duplicate and flip
   2:"     ]     % do this twice
      w          % swap
       V         % convert array of numbers to string with numbers and spaces
        Xv       % remove spaces
          U      % convert to number
            +    % add the two numbers
Luis Mendo
quelle
Funktioniert nicht für 11 oder 10. (Hinweis: Bereich umkehren, bevor in Zeichenfolge konvertiert wird.)
Mama Fun Roll
@ ӍѲꝆΛҐӍΛПӍѲꝆΛҐӍΛ Danke! Korrigiert
Luis Mendo
Groß! Habe eine Gegenstimme.
Mama Fun Roll
2

05AB1E , 5 Bytes

LJDR+

Erläuterung:

L     # Pushes an array containing 1 .. [implicit] input
 J    # Join the array to a string (eg. [1, 2, 3] -> 123)
  D   # Duplicate the array
   R  # Reverse the duplicate
    + # Add them together

Probieren Sie es online!

Okx
quelle
1

Bash + Coreutils, 39

eval echo {1..$1} + {$1..1}|tr -d \ |bc

Oder:

bc<<<`eval printf %s {1..$1} + {$1..1}`

Ideone.

Digitales Trauma
quelle
1

Perl 6 , 25 Bytes

{([~] @_=1..$^n)+[R~] @_}
{
  (
    [~]           # reduce with the string concatenation infix op:
    @_ = 1 .. $^n # the range 1 to input ( also stored in @_ )
  )
  +               # add that to
  [R~] @_         # @_ reduced in reverse
}

Verwendung:

for 6, 11, 12 -> $n {
  say {([~] @_=1..$^n)+[R~] @_}( $n )
}
777777
2345555545332
244567776755433
Brad Gilbert b2gills
quelle
Ich denke, Sie können mit $nanstelle von$^n
andlrc
@ dev-null Nicht, wenn ich möchte, dass es eine Eingabe für den Block ist. das -> $n {ist ein anderes zu $^n.
Brad Gilbert b2gills
1

R 34 60 64 Bytes

f=pryr::f;g=f(as.numeric(paste(x,collapse='')));f(g(1:n)+g(n:1))

Angenommen, das pryrPaket ist installiert. Dies ist feine Abkürzung zum Erstellen von Funktionen.

Edit fügte 26 Bytes hinzu, gab aber eine Funktion zurück, die funktioniert und nicht völlig falsch ist.

Edit fügte weitere 4 Bytes hinzu, um Fälle über n = 10 zu behandeln, in denen strtoi (zuvor verwendet) zurückgegeben wurde NA

mnel
quelle
1

Lua, 57

a=''b=''for i=1,...do a=a..i b=b.. ...-i+1 end return a+b
Moop
quelle
1

Lua, 53 Bytes

Dieses Programm verwendet nein Befehlszeilenargument.

s=""r=s for i=1,arg[1]do r,s=i..r,s..i end print(s+r)

Ich habe angenommen, dass die Ausgabe einer Zahl mit einem Dezimalteil von 0 in Ordnung ist (in der Form, 777777.0weil dies die Standardmethode für die Ausgabe einer Zahl in Lua ist (es gibt keinen Unterschied zwischen Integer und Float).

Katenkyo
quelle
Es ist nicht die Zeichenfolge selbst, die umgekehrt ist, sondern die Ziffern. Ihr Code schlägt am n> = 10 fehl.
Moop
@Moop Korrigiert zum Preis von 1 Byte ^^ '. Danke für den Kommentar ^^ '
Katenkyo
Sie können 3 weitere sparen, indem Sie ... anstelle von arg [1] an der Rückseite concat für r arbeiten. Daran habe ich in meiner Antwort nicht gedacht. +1
Moop
@Moop Ich habe deinen Beitrag gesehen, gute Verwendung, ich wusste nicht einmal, dass du ihn so verwenden könntest ...! Ich werde es für den Moment so belassen, weil ich nichts anderes als den Online - Compiler verwenden kann und er damit nicht umgehen kann (ich möchte es testen und ein wenig damit spielen, bevor ich es in a stecke Antwort :))
Katenkyo
1

Perl 5, 37 Bytes

25 Bytes plus 1 für -pund 11 für-MList::Gen

$_=<[.]1..$_>+<[R.]1..$_>

Vorherige Lösung, 40 Bytes: 39 plus eine für -p

@a=reverse@_=1..$_;$"=$\;$_="@a"+"@_"
msh210
quelle
1

Perl, 36 Bytes

Beinhaltet +1 für -p

Führen Sie mit auf STDIN

perl -p reverse.pl <<< 6

reverse.pl

$_=eval join"",map{abs||"+"}-$_..$_
Tonne Hospel
quelle
1

Dyalog APL , 17 Bytes

+/⍎¨∊¨⍕¨¨x(⌽x←⍳⎕)

Eingabeaufforderung
'Aufzählen bis Eingabe
x←Speicherliste in x
umkehren x
x()Umgekehrte Liste mit Originalliste voranstellen
⍕¨¨Jede Nummer jeder Liste in
∊¨Zeichenkette
⍎¨umwandeln Jede Liste von Zeichenketten in einzelne Zeichenketten umwandeln Jede Zeichenkette in eine
+/Zahlensumme aus den beiden Zahlen .

Adam
quelle
0

Mathematica, 64 Bytes

Plus@@FromDigits/@#&[""<>ToString/@#&/@{#,Reverse@#}&[Range@#]]&
CalculatorFeline
quelle
0

Netzhaut, 80 Byte (ISO 8859-1-Codierung)

'+
$0¶$0
+`^(('+)')
$2 $1
+`('('+))$
$1 $2
(')+( |$)?
$#1
(\d+)¶(\d+)
$1$*'$2$*'

IO ist unär mit 'als Zählzeichen. Theoretisch unterstützt jeder Integer, den Sie darauf werfen, in der Praxis ... Online-Interpreter lehnt es ab, alles zu verarbeiten, was größer als 6 ist (unär '''''').

Probieren Sie es online!
Probieren Sie es online! (dezimales E / A - 91 Byte)

Daavko
quelle
0

𝔼𝕊𝕄𝕚𝕟 12 Zeichen / 15 Byte

⨭⟮⩤⁽1ï⟯⨝,Ⅰᴚ⨝

Try it here (Firefox only).

Meh.

Erläuterung

Nimmt eine Strecke [1,input], schließt sich ihr an; Nimmt denselben Bereich, kehrt ihn um und schließt sich ihm an. Die Summe beider Bereiche ist das Ergebnis.

Mama Fun Roll
quelle
0

Ruby, 40 Zeichen

->n{eval (l=[*1..n])*''+?++l.reverse*''}

Probelauf:

irb(main):001:0> ->n{eval (l=[*1..n])*''+?++l.reverse*''}[11]
=> 2345555545332

irb(main):002:0> ->n{eval (l=[*1..n])*''+?++l.reverse*''}[6]
=> 777777
Mann bei der Arbeit
quelle
0

126 Bytes

using System.Linq;a=>{var b=Enumerable.Range(1,a);return long.Parse(string.Concat(b))+long.Parse(string.Concat(b.Reverse()));}

Könnte möglicherweise weiter golfen werden. Nicht wirklich sicher.

LegionMammal978
quelle
0

Groovy, 42 39 Zeichen

{[1..it,it..1]*.join()*.toLong().sum()}

Probelauf:

groovy:000> ({[1..it,it..1]*.join()*.toLong().sum()})(11)
===> 2345555545332

groovy:000> ({[1..it,it..1]*.join()*.toLong().sum()})(6)
===> 777777
Mann bei der Arbeit
quelle