Found on reddit
Found on reddit
çççç
ççç ççç
ççç ççç
ççç
ççç
ççç ççç
çççç
çç
çç
Fiz esse script (cedilha.sh) pra fazer o c-cedilha (ç) funcionar no Ubuntu 16.04. Como é uma tarefa chata que eu já tive que fazer muitas vezes fica mais fácil pra mim ter um script pra fazer isso e pode ser que seja útil a outras pessoas. Infelizmente é uma solução que exige baixar e executar como root um script da internet. Eu recomendo que você leia o script e entenda o que está acontecendo antes de executá-lo. Esse script altera vários arquivos importantes e ele faz um backup (.bak) desses arquivos.
[bash]wget https://raw.githubusercontent.com/silveira/cedilha.sh/master/cedilha.sh
sudo bash cedilha.sh[/bash]
Por favor, se o script funcionou pra você também, diga nos comentários. Se você não está usando Ubuntu 16.04 e quer testar o script ainda assim, edite o script e remova a verificação no inicio do programa.
[java]
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.TimeUnit;
class ParallelCounterExample {
public static void main(String[] args) throws InterruptedException {
int threads = 2000;
ExecutorService executor = Executors.newFixedThreadPool(threads);
final AtomicInteger atomi = new AtomicInteger();
for(int i=0; i<threads; i++) {
executor.execute( new Runnable() {
@Override
public void run() {
atomi.getAndIncrement();
}
});
}
executor.awaitTermination(1, TimeUnit.SECONDS);
executor.shutdown();
System.out.println(atomi.get());
}
}
[/java]

Problem: Match strings that contains a single quotation mark ('), but not multiple ones together.
Solution:
(?<!')'(?!')
This is a regex for a single quotation mark with a (?<!') in the left and a (?!’) in the right. The (?<!') is a ?< look behind if not ! a single quotation mark '. The (?!') is a look ahead ? if not ! a single quotation mark '.
Java code:
[java]import java.util.regex.Pattern;
public class RegexProblem {
public static void main(String args[]) {
Pattern single_quote = Pattern.compile("(?<!’)'(?!’)");
String[] phrases = {
"",
"’",
"a’a",
"aaa",
"aa’aa",
"aa”aa",
"aa”’aaa",
"aaa””aaa"
};
for(String phrase: phrases){
System.out.println(String.format("For %s is %s.", phrase,
single_quote.matcher(phrase).find()));
}
}
}
[/java]
The output is:
For is false. For ' is true. For a'a is true. For aaa is false. For aa'aa is true. For aa''aa is false. For aa'''aaa is false. For aaa''''aaa is false.
[bash]
#!/bin/sh
file="/tmp/myfile"
while read line; do
echo $line
done < "$file"
[/bash]
Problem: Given a sequence of numbers, show all possible letter combinations in a telephone keypad.
Recursive solution in Python:
[python]
keyboard = {
‘1’: [],
‘2’: [‘a’,’b’,’c’],
‘3’: [‘d’,’e’,’f’],
‘4’: [‘g’,’h’,’i’],
‘5’: [‘j’,’k’,’l’],
‘6’: [‘m’,’n’,’o’],
‘7’: [‘p’,’q’,’r’,’s’],
‘8’: [‘t’,’u’,’v’],
‘9’: [‘w’,’x’,’y’,’z’],
‘0’: []
}
def printkeys(numbers, prefix=""):
if len(numbers)==0:
print prefix
return
for letter in keyboard[numbers[0]]:
printkeys(numbers[1:], prefix+letter)
printkeys("234")
[/python]
Output:
adg adh adi aeg aeh aei afg afh afi bdg bdh bdi beg beh bei bfg bfh bfi cdg cdh cdi ceg ceh cei cfg cfh cfi
In case you can’t use Python’s itertools or in case you want a simple, recursive python implementation for a permutation of a list:
[python]
def perm(a,k=0):
if(k==len(a)):
print a
else:
for i in xrange(k,len(a)):
a[k],a[i] = a[i],a[k]
perm(a, k+1)
a[k],a[i] = a[i],a[k]
perm([1,2,3])
[/python]
Output:
[1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 2, 1] [3, 1, 2]
This Python implementation is based in the algorithm presented in the book Computer Algorithms by Horowitz, Sahni and Rajasekaran.
[bash]$ echo {0..9}
0 1 2 3 4 5 6 7 8 9[/bash]
[bash]$ echo b{a,e,i,o,u}
ba be bi bo bu
[/bash]
[bash]$ echo x{0..9}y
x0y x1y x2y x3y x4y x5y x6y x7y x8y x9y[/bash]
[bash]$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z[/bash]
[bash]$ echo {1..3} {A..C}
1 2 3 A B C[/bash]
[bash]$ echo {1..3}{A..C}
1A 1B 1C 2A 2B 2C 3A 3B 3C[/bash]
[bash]echo {a,b{1,2,3},c}
a b1 b2 b3 c[/bash]
[bash]$ mkdir -p {project1,project2}/{src,tst,bin,lib}/
$ find .
.
./project1
./project1/tst
./project1/bin
./project1/lib
./project1/src
./project2
./project2/tst
./project2/bin
./project2/lib
./project2/src
[/bash]
[bash]$ echo {{A..Z},{a..z}}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z[/bash]
[bash]$ for i in {a..f} 1 2 {3..5} ; do echo $i;done
a
b
c
d
e
f
1
2
3
4
5[/bash]
The examples below requires Bash version 4.0 or greater.
[bash]$echo {001..9}
001 002 003 004 005 006 007 008 009
[/bash]
[bash]$ echo {1..10..2}
1 3 5 7 9
[/bash]
Merging n lists of size k, using two different approaches.