Подавши від’ємне число n
, сортуйте цифри n
за першим їх виникненням у pi .
Введення можна сприймати через аргумент функції cli або STDIN і як рядок, char [] або ціле число. Ви можете виводити через повернене значення, статус виходу або STDOUT.
Подавши від’ємне число n
, сортуйте цифри n
за першим їх виникненням у pi .
Введення можна сприймати через аргумент функції cli або STDIN і як рядок, char [] або ціле число. Ви можете виводити через повернене значення, статус виходу або STDOUT.
Відповіді:
ox+.n0
-1 завдяки Leaky Nun : Вхід надасть інформацію, 0
якщо вона коли-небудь знадобиться.
Тривіальний -1 завдяки Jakube : Backtick не потрібен (ах, як я це пропустив, ЯК?!?).
0
в кінці. Якщо вхід має a 0
, вхід 0
буде наданий; якщо вхід не має 0
, це не має значення.
ox+.n0
3
, оскільки знахідка повернеться, -1
коли елемент не буде знайдено.
Збережено 1 байт завдяки Leaky Nun відзначивши, що фільтрувати дублікати не потрібно.
Збережено 2 байти завдяки Аднану .
žqRvy†J
Пояснення
žq # push pi to 15 decimals (contains all digits but 0)
R # reverse
vy # for each char in pi
†J # move it's occurrences in the input to the front
13žsRvy†J
для 9 байтів
žq
замість 13žs
?
“ṀSṪw’ṾiµÞ
Вводить введення як рядок цифр.
-3 байти завдяки @ETHproductions
Пояснення
“ṀSṪw’ṾiµÞ
µ - Separate chain into function “ṀSṪw’Ṿi and sort atom Þ.
Þ - Sort the input by
i - Each digit's index in:
“ṀSṪw’ - the literal 3145926870 ...
Ṿ - transformed into the list 3,1,4,5,9,2,6,8,7,0
3145926870
може бути представлено у вигляді 4-розрядного рядка base-250 (тобто він займає 6 байт замість 10), але я не впевнений, як його стиснути як такий.
8 байт коду, +1 для -P
прапора.
–!bMP+U
Спробуйте в Інтернеті!Вводиться як рядок.
–!bMP+'0 // Implicit input
¬ // Split the input into chars.
ñ // Sort each char in the resulting list by
!b // its index in
MP+U // Math.PI + the input.
-P // Join the result back into a single string.
// Implicit: output result of last expression
f=
s=>[...s].sort((a,b)=>k[a]-k[b],k=`9150236874`).join``
<input oninput=o.textContent=f(this.value)><pre id=o>
Використовує рядки для вводу / виводу.
-1 байт завдяки Деннісу (використовуйте будь-які наявні 0
у вводі, розумні.)
ØP;ṾiµÞ
ØP;ṾiµÞ - Main link: string s (char list)
µÞ - sort the characters, c, of s by:
i - first index of c in:
ØP - pi yield: 3.141592653589793
; - concatenate with left: [3.141592653589793, c]
Ṿ - un-evaluate: "3.141592653589793,c" (a char list with the digit character c)
if any c is 0 ^ it will then be to the right of all others
3820009
(sqrt 14592468760081
) досі 3
цифри в базі 250
.
Ṿ
вашому поясненні неправильно.
r{P`#c}$
-3: Використовуйте рядок на основі P
змінної pi замість прямої.
-2: Вирішив, що мені зовсім не потрібно уніфікувати, оскільки пошук індексу все-таки є першим явищем.
-2: Завдяки jimmy23013 за цікавий підхід із використанням x mod 65536.
Пояснення:
r {P` # c} $ e # Бере маркер введення re # Візьміть ціле число як рядок {P` # c} e # Клавіша сортування: P e # Push P (за замовчуванням до 3.141592653589793) `e # Перетворити на подання рядків # e # Знайдіть індекс char у рядку, який ми створили e # A '. " ніколи не буде знайдено ціле число, але це не має значення, оскільки зсув зберігає ідеальне сортування. e # A '0' буде індексовано як -1. ce # Перетворити індекс в char e # Цей спочатку обчислює індекс% 65536, а потім перетворює на char. Це нам потрібно, тому що в іншому випадку 0 буде індексуватися як -1, тобто найменший індекс. e # Нам не потрібно перетворювати назад у цілі числа, оскільки ми можемо використовувати лексикографічне сортування. $ e # Сортувати за допомогою ключа
ci
навіть перетворить назад на ціле число.
Рішення регулярний вираз коротше
for(;~$c=_3145926870[$i++];)echo str_repeat($c,substr_count($argn,$c));
або
for(;~$c=_3145926870[$i++];)echo str_pad("",substr_count($argn,$c),$c);
for(;~$c=$argn[$i++];)$j[strpos("3145926870",$c)].=$c;ksort($j);echo join($j);
$a=str_split($argn);usort($a,function($x,$y){return strpos($d="3145926870",$x)<=>strpos($d,$y);});echo join($a);
char*p="3145926870";s(*a,*b){return strchr(p,*a)-strchr(p,*b);}f(char*t){qsort(t,strlen(t),1,s);}
char
в char*p
іchar*t
n=gets;"3145926870".each_char{|c|$><<c*n.count(c)}
YP99Y$uj!y=sY"
Символ ;
використовується як роздільник рядків у матрицях. Так [1 2 3]
є векторний рядок, [1; 2; 3]
це вектор стовпців і [1 2; 3 4]
є квадратною матрицею. Останні також можуть бути представлені, для наочності, як
[1 2;
3 4]
Розглянемо вклад 2325
як приклад.
YP % Push approximation of pi as a double (predefined literal)
% 3.14159265358979
99Y$ % Variable-precision arithmetic with 99 digits. Gives a string.
% The input 3.14159265358979 is recognized as representing pi
% STACK: '3.141592653589793238462 ··· 707'
u % Unique entries, keeping order of their first appearance
% STACK: '3.145926870'
j % Input line as a string
% STACK: '3.145926870', '2352'
! % Transpose
% STACK: '3.145926870', ['2'; '3';'5'; '2']
y % Duplicate the second-top element in the stack
% STACK: '3.145926870', ['2'; '3';'5'; '2'], '3.145926870'
= % Test for equality, with broadcast. This gives a matrix with
% all pairwise comparisons)
% STACK: '3.145926870', [0 0 0 0 0 0 1 0 0 0 0;
% 1 0 0 0 0 0 0 0 0 0 0;
% 0 0 0 0 1 0 0 0 0 0 0;
% 0 0 0 0 0 0 1 0 0 0 0]
s % Sum of each column
% STACK: '3.145926870', [1 0 0 0 1 0 2 0 0 0 0]
Y" % Run-length decoding. Implicitly display
% STACK: '3522'
f(char*s){for(char*d="3145926870",*p;*d;d++)for(p=s;*p;)*p++-*d||putchar(*d);}
i.OrderBy(c=>"145926870".IndexOf(c))
Насправді вам потрібно виконати це в інтерактиві C #, щоб отримати належні результати, але я думаю, що це ви мали на увазі під статусом виходу . Змінна i насправді є вхідною змінною (це може бути, наприклад, рядок), тому в основному це параметр методу.
Я думаю, що сам код досить прямо.
3
?
i
це десь, щоб його можна було взяти за вхід. Крім того, якщо ви говорите C #, ви повинні включити using System.Linq;
до числа байтів. Однак якщо це інтерактив, ви повинні вказати мову як C # Interactive, а не лише C #.
Довелося усвідомити, що 0
в стандартній довжині pi немає постійної.
Σтžsyk
Σтžsyk
Σ Sort by the result of code
тžs Push 100 digits of pi
yk Index of digit in pi
Σ
нове, ніж виклик.
Збережено 1 байт завдяки Титу.
while(~$d=_3145926870[++$i])echo preg_filter("/[^$d]/",'',$argn);
String c(String s){String r="";for(char i:"3145926870".toCharArray())r+=s.replaceAll("[^"+i+"]","");return r;}
Пояснення:
String c(String s){ // Method with String parameter and String return-type
String r=""; // Result String
for(char i:"3145926870".toCharArray()) // Loop over the characters of "3145926870"
r+=s.replaceAll("[^"+i+"]",""); // Append the result-String with all the occurrences of the current character
// End of loop (implicit / single-line body)
return r; // Return the result-String
} // End of method
Код тесту:
class M{
static String c(String s){String r="";for(char i:"3145926870".toCharArray())r+=s.replaceAll("[^"+i+"]","");return r;}
public static void main(String[] a){
System.out.println(c("12345678908395817288391"));
}
}
Вихід:
33311145599922688888770
#(sort-by(zipmap"3145926870"(range))%)
Введіть рядок, повертає послідовність символів. zipmap
створює об’єкт "словник", який також може бути використаний у контексті функції.
(f "1234")
(\3 \1 \4 \2)
Якщо введені цифри гарантовано були унікальними, ви можете просто зробити #(filter(set %)"3145926870")
.
for(;(~$d=$argn[$j++])||~$c=_3145926870[$i+++$j=0];)$c==$d&&print$d;
Досі побила preg_filter, але я подумала, що це було досить добре. Можливо, хтось може покататися на байті.
$c!=$d?:print$d
як альтернативу $c==$d&&print$d
я бачу лише в даний момент
_3145926870
замість `" 3145926870 "зберегти 1 байт
for(;(~$d=$argn[$j++])?:~$c=_3145926870[++$i+$j=0];$c!=$d?:print$d);
також
*.comb.sort:{3145926870.index: $_}
*\ # WhateverCode lambda (this is the parameter)
.comb # split into digits
.sort: { # sort by
3145926870.index: $_ # its index in this number
}