[테스트] 게임 계획 및 QA 삶 맞춤형 엑셀 테이블은 diff 알고리즘

국내 게임 개발 팀 계획에 많은 학생들이 도구를 사용하여 테이블로 엑셀을 사용하는 것에 익숙해있다. 그래서 학생들을 계획하는 학생들을위한 교정 및 품질 보증 수용은, 적절한 도구의 필요성은 가능한 한 빨리 테이블과 문제를 식별 할 수있는 파일을 엑셀 DIFF 변화를 감지 할 수 있습니다. 이를 위해 저자는 게임 효율성 도구 세트의 시작 gameff-도구 세트 작은 프로젝트를 첫 번째 작은 스크립트는 엑셀 DIFF을 할 것입니다.

DIFF 알고리즘은 많이 가지고 있지만, 계획 테이블 및 계획 업무의 특성을 반영하는 방법이 관심을 가장 필요하다. 많은 프로젝트는 너무 SVN에서 그러므로, 우리는 신경, 변경 / 증가에 ​​무슨 일이 있었는지 알 수있는 계획 테이블의 정보를 커밋 SVN에 의해 ​​계획 테이블이 저장된에 어떻게 각 엑셀 파일은 diff 작업.

다음과 같은 특성을 가진 계획 엑셀 테이블 :

  • 각 시트는 헤더 헤더, 일반 헤더 행 헤더가
  • 헤더 세트는 일반 이후 변경되지 않습니다
  • 다른 시트, 실질적으로 상이한 테이블 구조
  • 행은 반드시 심지어 시트 중복 ID로, 기본 키가 없습니다
  • 마다 변경 적은 행 수의 행 수는 비교적 변하지 변경
  • 선이 다른 위치로 이동 몇 가지 경우가있을 수 있습니다
  • 계획 학생들의 의견을 추가 할 수 있습니다 약간의 빈 영역에서 Excel

따라서, 용지 사이즈의 관점에서, DIFF 모듈이 설계 될 수있다 :

  • 정의 헤더 행 인덱스, 행 인덱스 데이터 시작, 데이터는 열 인덱스를 시작
  • 통계는 헤더의 제거를 증가. 간단한 헤더 이름을 변경하는 경우, 실질적으로 데이터를 다음의 변화없이, 전체 열은 변화하는 것으로 간주 될 수있다. 따라서, 컬럼의 길이가 달라진다.
  • 공통 헤더를 들어, 다음 라인 통계 자료가 불법 라인을 제거합니다. 행 시작 열은 아니더라도 법적으로, 데이터가없는 경우.
  • 그들이 라인은 라인을 변경하는 변경되지 않는 것을 알 수 있도록, 매핑 변화 엑셀 엑셀 행 전후에 변화를 가져 해시 라인을 추구함으로써.
  • 변화를 추구 이후의 라인에 대한 변화는 이러한 라인의 인덱스에서 능가하지 LIS . 수 기준을 계산하는 구체적인 방법 에 유래 기본 아이디어는 두 개의 배열을 사용하는 것이다에 포스트는 x의 LIS의 마지막 번호의 최소의 인덱스 번호 LIS 전회 이전 번호의 인덱스와 인덱스의 수만큼 유지 후방으로 배열 한 후, 이에 문자열 LIS을 얻었다. LIS 문자열, 우리는 라인이 단지 위치를 이동 알 수 있으며, 내용은 변경되지 않았습니다.
  • 라인 "변화"뿐만 아니라 삼가지 경우 경우 : 라인을 증가 줄을 잘라 줄을 수정. 각각의 행은 일반적으로 변화하지 관한 없기 때문에, 각 행의 격자에 의해 복잡하게되는 공정의 사용 O (N면) 할 수있다. 프레임으로 비교하면 여행 사이의 유사성을 찾을 수 있습니다, 그래서 우리는 두 개의 유사한 행 여부를 결정하는 유사성 임계 값을 정의 할 수 있습니다. 행의 최초 행과의 유사도가 임계 값보다도 큰 경우, 우리는 단지 셀에 기록 변경해야 그래서,는 "변형 라인"동작으로 두 줄의 대응을 도시하는, 변경 전의 행에서 보이는 것 적은 유사한 변화보다는 후 행은 "절단 선"행동이며, 변경 전의 몇 가지 변화에 행에 대응 한 후 행이없는 경우에 "라인 업"동작입니다.

이 모듈 자세한 코드는 작성되었습니다 excel_differ.py 지나치게 세심한하지 마무리하지만, 최적화의 여지가있을 수 있지만, 모듈은 분할 분명 충분히 왔으며, 성능도 OK 충분하다. 당신이 두 개의 폴더는 달리 파일을 엑셀 가지고가는 경우에, 당신은 유사한 내보낼 수 의 JSON 보고서를. 그래서 간단한 CopyPaste에 스크립트, 또는 웹 서버에, 더 충분한보다 여부, 운영에 넣어

게시 42 개 원래 기사 · 원 찬양 7 ·은 10000 +를 볼

추천

출처blog.csdn.net/u013842501/article/details/104076218