바뀐 조개 스크립트
shuf
와nl
잘 썼기 때문에 미리 필기를 해 두세요.이번에는 예를 들어 8명의 좌석을 무작위로 배정하는 각본을 쓴다.
macOS의 경우
gnuutils
가 필요합니다.1단계: 좌석 번호 결정
좌석 번호에 따라.
1 2
3 4
(通路)
5 6
7 8
2단계: 이름이 적힌 파일 준비
가끔 파일
echo
또는 cat
을 사용하지 않으면 됩니다.이번에 일본 성씨 인구 상위 8명이 집결했다.
佐藤
鈴木
高橋
田中
伊藤
渡辺
山本
中村
STEP3:shuf와 nl 랜덤 좌석 결정
$ cat names.txt | shuf | nl
1 高橋
2 鈴木
3 中村
4 佐藤
5 山本
6 渡辺
7 伊藤
8 田中
4단계: 좌석번호로 바꿔 좌석표처럼 만들기
sed
GNU sed를 사용합니다.s/\b1\b/渡辺/;
와 같은sed 명령이 생성되었습니다.$ cat names.txt | shuf | nl | awk '{print "s/\\b"$1"\\b/"$2"/;"}' | sed -f - seats
渡辺 山本
佐藤 中村
(通路)
鈴木 高橋
伊藤 田中
번외편1: 특정한 사람을 다가가게 하고 싶다
여러 경우에 따라 특정 한 쌍의 분리를 원하지 않는 경우도 있다.
이번에는 예를 들어 사토와 스즈키를 가깝게 앉혔다.
1단계: 한 줄로 쌍 만들기
사토와 방울나무는 같은 줄에 공백 구분자로 쓴다.
佐藤 鈴木
高橋
田中
伊藤
渡辺
山本
中村
2단계:shuf,xargs-n1,n1로 좌석 무작위 결정
사토 뒤에는 틀림없이 방울나무가 있기 때문에 두 사람은 매우 가깝게 앉았다.
$ cat names.txt | shuf | xargs -n1 | nl
1 渡辺
2 田中
3 中村
4 佐藤
5 鈴木
6 山本
7 高橋
8 伊藤
그러나 두 사람의 좌석은 때로는 비스듬하고 때로는 통로를 끼고 있다.또 2, 4, 5, 7 같은 패턴은 나타나지 않는다.
특정인을 접목시키려 하다
사토와 스즈키는 옆에서 줄을 서세요.
번거롭기 때문에 랜덤으로 배정한 후 근처 좌석과 상의한 후 교환합시다.
STEP1: 사토와 스즈키 이외에 2조의 조합을 제작했다
사토와 스즈키 이외의 두 사람은 무작위로 조합된다.
$ cat <(cat names.txt | grep ' ') <(cat names.txt | grep -v ' ' | shuf | paste - - )
佐藤 鈴木
伊藤 山本
中村 高橋
田中 渡辺
단계 2:shuf,xargs-n1 후 nl 진행
사토는 틀림없이 홀수일 것이다.
좌석표에 덩굴이 홀수이고 다음 숫자가 방울나무라면 기울지도 않고 통로를 끼우지도 않는다.
$ cat <(cat names.txt | grep ' ') <(cat names.txt | grep -v ' ' | shuf | paste - - ) | shuf | xargs -n1 | nl
1 伊藤
2 高橋
3 田中
4 渡辺
5 山本
6 中村
7 佐藤
8 鈴木
그러나 덩굴과 방울나무의 배열 방식은 항상 좌우이다.위아래로 인접할 수 없다.위아래가 서로 인접해 있으면 좌석 번호의 배치를 바꿀 수 있다.
겸사겸사 말씀드리겠습니다.
실제 좌석을 바꾸는 것은 랜덤이면 곤란하고, 특정한 사람은 먼저 자리를 고정시킨 뒤 스크립트로 남은 좌석을 랜덤으로 결정한다.
당시 상황에 따라 제약도 달라지기 때문에 매번 쓴 조개 각본을 버린다.
Reference
이 문제에 관하여(바뀐 조개 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yasuhiroki/articles/39948d054913dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)