Есть такая строчка на bash.
for i in `seq 0 32`; do echo "obase=2; $i" | bc; done
Результат его выполнения
1
10
11
100
101
и т.д.Вопрос - есть ли какой-то простой способ вывести результат в таком виде?
AAAAA
AAAAB
AAABA
AAABB
и т.д.
Ну совсем не думая можно так:for i in `seq 0 32`; do echo "obase=2; $i" | bc; done | awk '{printf "%07d\n", $0}' | tr "01" "AB"
Спасибо.
for i in `seq 0 32`; do echo "obase=2; $i" | bc; done | awk '{if(length($1)==1) print "0000"$1 } {if(length($1)==2) print "000"$1} {if(length($1)==3) print "00"$1} {if(length($1)==4) print "0"$1} {if(length($1)==5) print $1}' | tr '01' 'AB'я добавил момент, что в ответе в каждой строчке - 5 символов, я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ КТО-НИБУДЬ!!!1
это просто какой-тааа бинарный мазахизм ...
> я добавил момент, что в ответе в каждой строчке - 5 символов,
> я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ
> КТО-НИБУДЬ!!!1for i in `seq 0 32`; do echo "obase=2; $i" | bc | tr "01" "AB"; done
Так проще)
>> я добавил момент, что в ответе в каждой строчке - 5 символов,
>> я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ
>> КТО-НИБУДЬ!!!1
> for i in `seq 0 32`; do
> echo "obase=2; $i" | bc | tr "01" "AB";
> done
> Так проще)Читаем условие задачи, особенно это:
Вопрос - есть ли какой-то простой способ вывести результат в таком виде?
AAAAA
AAAABТо есть, в выводе все поля должны содержать 5 символов.
Ваше блестящее решение этого не предусматривает, оно делает tr и всё.
>>> я добавил момент, что в ответе в каждой строчке - 5 символов,
>>> я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ
>>> КТО-НИБУДЬ!!!1
>> for i in `seq 0 32`; do
>> echo "obase=2; $i" | bc | tr "01" "AB";
>> done
>> Так проще)
> Читаем условие задачи, особенно это:
> Вопрос - есть ли какой-то простой способ вывести результат в таком виде?Вот как раз если внимательно читать условие, то как вы
1
10
11
100
101
и т.д.
выведите в указанном виде ))
100000 в таком виде уже не вывести ))
> AAAAA
> AAAAB
> То есть, в выводе все поля должны содержать 5 символов.
> Ваше блестящее решение этого не предусматривает, оно делает tr и всё.
>[оверквотинг удален]
> 11
> 100
> 101
> и т.д.
> выведите в указанном виде ))
> 100000 в таком виде уже не вывести ))
>> AAAAA
>> AAAAB
>> То есть, в выводе все поля должны содержать 5 символов.
>> Ваше блестящее решение этого не предусматривает, оно делает tr и всё.Наверное, моя вина, что я не полностью сформулировал задачу. Чтобы избежать споров, скажу, что нужно было только дописать нули в начало.
>[оверквотинг удален]
>> 101
>> и т.д.
>> выведите в указанном виде ))
>> 100000 в таком виде уже не вывести ))
>>> AAAAA
>>> AAAAB
>>> То есть, в выводе все поля должны содержать 5 символов.
>>> Ваше блестящее решение этого не предусматривает, оно делает tr и всё.
> Наверное, моя вина, что я не полностью сформулировал задачу. Чтобы избежать споров,
> скажу, что нужно было только дописать нули в начало.То есть, нужно было получить на выходе
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
Так, что ли, если я правильно понял смысл последнего?
Ну так и спрашивайте, конкретно, а не окольными путями, а то народ вас не поймет. ))
Я дико извиняюсь за некоторый некрофилизм.))
Немного подправив вышеприведённые примеры, получим через логарифм такой полууниверсальный вариант:#!/bin/sh
#(2,4,8,16,32,64... etc)
it=16
for i in $(seq 0 $it); do echo "obase=2; $i" | bc; done | awk '{lg=log('$it')/log(2)+1; printf "%0"lg"d\n", $0}'справедливо для
obase=2 (bin)
если obase
obase=16 (hex)
obase=10 (dec)
obase=8 (oct)
то и основание логарифма нужно менять, с вытекающими отсюда..
>>[оверквотинг удален]ППЦ!!!
_правильный_ ответ (в вмысле не рыбы но удочки) был дав во ___2___ посте.
И уже 33 поста - пелекдадывание яиц из левого кармана в правый и обратно.
Баб себе найдите придурки :)